मुख्य सामग्री पर जाएं

साथ काम करनाdatasets.xmlफ़ाइल

\[यह वेब पेज केवल ब्याज का ही होगाERDDAP™व्यवस्थापक।\]

उसके बादERDDAP™ स्थापना निर्देश, आप संपादित करना चाहिएdatasets.xmlफाइल tomcat अपने डेटासेट का वर्णन करने के लिए /content/erddap/ERDDAP™स्थापना की जाएगी।

आप एक उदाहरण देख सकते हैंdatasets.xmlGitHub

परिचय

कुछ आवश्यक विधानसभा

डेटासेट स्थापित करनाERDDAP™केवल डेटासेट की निर्देशिका या यूआरएल को इंगित करने का कोई मामला नहीं है। आपको XML का एक हिस्सा लिखना होगाdatasets.xmlजो डेटासेट का वर्णन करता है।

  • ग्रिड डेटासेट के लिए, डेटासेट बनाने के लिएERDDAPग्रिड डेटा के लिए डेटा संरचना, आपको डेटासेट के चर की एक सबसेट की पहचान करना होगा जो समान आयामों को साझा करता है। (क्यों? कैसे?)
  • डेटासेट का वर्तमान मेटाडाटा स्वचालित रूप से आयात किया जाता है। लेकिन अगर आप उस मेटाडाटा को संशोधित करना चाहते हैं या अन्य मेटाडाटा जोड़ते हैं, तो आपको इसे निर्दिष्ट करना होगाdatasets.xml। औरERDDAP™अन्य मेटाडाटा की जरूरत है, जिसमें शामिल हैंवैश्विक गुण (जैसेinfoUrlसंस्थानsourceUrlसारांश और शीर्षक) औरचर गुण (जैसेlong\_nameइकाई) । जैसा कि वर्तमान में डेटासेट में मौजूद मेटाडाटा डेटासेट में वर्णनात्मक जानकारी जोड़ता है, मेटाडाटा द्वारा अनुरोध किया गया हैERDDAP™डेटासेट में वर्णनात्मक जानकारी जोड़ता है। अतिरिक्त मेटाडाटा आपके डेटासेट के लिए एक अच्छा जोड़ है और मदद करता हैERDDAP™अपने डेटा को उपयोगकर्ताओं के लिए प्रस्तुत करने का बेहतर काम करते हैं जो इससे परिचित नहीं हैं।
  • ERDDAP™आपको विशेष काम करने की आवश्यकता हैअक्षांश, ऊंचाई (या गहराई) , और समय चर

यदि आप इन विचारों को खरीदते हैं और XML बनाने के प्रयास को खर्च करते हैंdatasets.xml, आपको सभी लाभ मिलते हैंERDDAP™सहित:

  • डेटासेट के लिए पूर्ण पाठ खोज
  • श्रेणी द्वारा डेटासेट के लिए खोजें
  • डाटा एक्सेस फॉर्म ( datasetID एचटीएमएल) इसलिए आप विभिन्न फ़ाइल प्रारूपों में डेटा की एक सबसेट का अनुरोध कर सकते हैं
  • ग्राफ और मैप्स का अनुरोध करने के लिए फॉर्म ( datasetID ग्राफ़)
  • वेब मानचित्र सेवा (WMS) ग्रिड डेटासेट के लिए
  • RESTfulअपने डेटा तक पहुंच

बनानाdatasets.xmlपहले कुछ डेटासेट के लिए काफी प्रयास करता है, लेकिन यह आसान हो जाता है । पहले डेटासेट के बाद, आप अक्सर अगले डेटासेट के लिए अपने काम का उपयोग कर सकते हैं। सौभाग्य से,ERDDAP™दो के साथ आता हैउपकरणआपको प्रत्येक डेटासेट के लिए XML बनाने में मदद करने के लिएdatasets.xml। यदि आप अटक जाते हैं, तो हमें देखेंअतिरिक्त समर्थन प्राप्त करने पर अनुभाग

डेटा प्रदाता फॉर्म

जब कोई डेटा प्रदाता आपको अपने डेटा को जोड़ने की उम्मीद करता हैERDDAP, यह मुश्किल और समय लेने के लिए सभी मेटाडाटा इकट्ठा करने के लिए (डेटासेट के बारे में जानकारी) डेटासेट को जोड़ने के लिए आवश्यक हैERDDAP। कई डेटा स्रोत (उदाहरण के लिए, .csv फ़ाइलें, एक्सेल फाइलें, डेटाबेस) कोई आंतरिक मेटाडाटा नहीं है, इसलिएERDDAP™एक डेटा प्रदाता फॉर्म है जो डेटा प्रदाता से मेटाडाटा इकट्ठा करता है और डेटा प्रदाता को कुछ अन्य मार्गदर्शन देता है, जिसमें व्यापक मार्गदर्शन शामिल है।डेटाबेस में डेटा। प्रस्तुत की गई जानकारी को परिवर्तित कर दिया गया है।datasets.xmlप्रारूप और फिर ईमेल करने के लिएERDDAP™व्यवस्थापक (आप) और लिखा (परिशिष्ट) to बड़ाParentDirectory /logs/dataProviderForm.log. इस प्रकार, फॉर्म अर्ध स्वचालित रूप से डेटासेट प्राप्त करने की प्रक्रिया को स्वचालित करता हैERDDAPलेकिनERDDAP™प्रशासक को अभी भी पूरा करना हैdatasets.xmlडेटा फ़ाइल प्राप्त करने के साथ भाग और सौदा (s) प्रदाता से या डेटाबेस से जुड़ना।

बाह्य स्रोतों से वास्तविक डेटा फ़ाइलों को जमा करना एक भारी सुरक्षा जोखिम है, इसलिएERDDAP™इसके साथ सौदा नहीं करता है। उदाहरण के लिए, आपको एक ऐसे समाधान का पता लगाना होगा जो आपके और डेटा प्रदाता के लिए काम करता है, उदाहरण के लिए, ईमेल (छोटी फ़ाइलों के लिए) , बादल से खींचो (उदाहरण के लिए, ड्रॉपबॉक्स या गूगल ड्राइव) , एक sftp साइट (पासवर्ड के साथ) , या स्नीकर नेट (यूएसबी अंगूठे ड्राइव या बाहरी हार्ड ड्राइव) । आपको शायद केवल उन लोगों से फ़ाइलों को स्वीकार करना चाहिए जिन्हें आप जानते हैं। आपको वायरस के लिए फ़ाइलों को स्कैन करने और अन्य सुरक्षा सावधानियों को लेने की आवश्यकता होगी।

इसमें कोई लिंक नहीं हैERDDAP™डेटा प्रदाता फॉर्म (उदाहरण के लिए, परERDDAP™होम पेज) । इसके बजाय, जब कोई आपको बताता है कि वे अपने डेटा को आपके द्वारा सेवा प्रदान करना चाहते हैंERDDAP, आप उन्हें कुछ ऐसा कह सकते हैं: हां, हम आपके डेटा को आपके डेटा में बदल सकते हैंERDDAP। शुरू करने के लिए, कृपया फॉर्म भरें https://yourUrl/erddap/dataProviderForm.html (याhttp://अगरhttps://सक्षम नहीं है) । समाप्त होने के बाद, मैं आपसे अंतिम विवरण देने के लिए संपर्क करूँगा। यदि आप सिर्फ फॉर्म देखना चाहते हैं (इसे भरने के बिना) , आप फॉर्म को देख सकते हैंERD'ERDDAP:परिचय,भाग 1,भाग 2,भाग 3, औरभाग 4। ये लिंकERD ERDDAP™मुझे जानकारी भेजें, न कि आप, इसलिए उन लोगों के साथ जानकारी प्रस्तुत न करें जब तक कि आप वास्तव में डेटा जोड़ना चाहते हैं।ERD ERDDAP।

यदि आप अपने डेटा प्रदाता फॉर्म को अपने आप से हटाना चाहते हैंERDDAP™, रखना

<dataProviderFormActive>false</dataProviderFormActive>  

अपने सेटअप.xml फ़ाइल में।

इसके लिए impetus थाNOAA2014अनुसंधान परिणाम (PARR) निर्देश, जिसके लिए सभी की आवश्यकता हैNOAAकरदाता डॉलर के माध्यम से वित्त पोषित पर्यावरण डेटा डेटा सेवा के माध्यम से उपलब्ध कराया जा सकता है (न सिर्फ़ फाइल) निर्माण के 12 महीनों के भीतर। इसलिए उपयोग में रुचि बढ़ जाती हैERDDAP™एक सेवा ASAP के माध्यम से उपलब्ध डेटासेट बनाने के लिए। हमें बड़ी संख्या में डेटा प्रदाताओं से निपटने के लिए अधिक कुशल तरीके की आवश्यकता है।

प्रतिक्रिया / सुझाव? यह फॉर्म नया है, इसलिए कृपया ईमेल करेंerd dot data at noaa dot govयदि आपके पास इस सुधार के लिए कोई प्रतिक्रिया या सुझाव है।

उपकरण

ERDDAP™दो कमांड लाइन प्रोग्राम के साथ आता है जो टूल हैं जो आपको प्रत्येक डेटासेट के लिए XML बनाने में मदद करता है जिसे आप चाहते हैं कि आपका XMLERDDAP™सेवा एक बार जब आपने स्थापित किया हैERDDAP™इसे चलाने के लिए (कम से कम एक बार) , आप इन कार्यक्रमों को पा सकते हैं और उपयोग कर सकते हैं tomcat /webapps/erddap/WEB-INF निर्देशिका। लिनक्स / यूनिक्स शेल स्क्रिप्ट हैं (एक्सटेंशन .sh साथ) Windows स्क्रिप्ट (एक्सटेंशन .bat के साथ) प्रत्येक कार्यक्रम के लिए।\[लिनक्स पर, इन उपकरणों को उसी उपयोगकर्ता के रूप में चलाएं (Tomcat?) वह टॉमकैट चला जाएगा।\]जब आप प्रत्येक कार्यक्रम को चलाते हैं, तो यह आपको सवाल पूछेगा। प्रत्येक प्रश्न के लिए, एक प्रतिक्रिया टाइप करें, फिर एंटर दबाएँ। या किसी भी समय एक कार्यक्रम से बाहर निकलने के लिए ^C दबाएँ।

कार्यक्रम नहीं चलेगा?

  • यदि आप अज्ञात प्रोग्राम प्राप्त करते हैं (समान) त्रुटि संदेश, समस्या यह है कि ऑपरेटिंग सिस्टम को नहीं मिल सकाJava। आपको यह पता लगाने की आवश्यकता है कि आपको कहाँ देखना हैJavaअपने कंप्यूटर पर है, फिर आप उपयोग करने की कोशिश कर रहे हैं कि .bat या .sh फ़ाइल में जावा संदर्भ संपादित करें।
  • यदि आप एक जार फ़ाइल प्राप्त करते हैं, तो त्रुटि संदेश नहीं मिला या वर्ग नहीं मिला है, तो फिरJavaआप उपयोग करने की कोशिश कर रहे हैं .bat या .sh फ़ाइल में सूचीबद्ध वर्गों में से एक नहीं मिल सका। समाधान यह जानने के लिए है कि .jar फ़ाइल कहाँ है, और .bat या .sh फ़ाइल में जावा संदर्भ को संपादित करें।
  • यदि आप एक संस्करण का उपयोग कर रहे हैंJavaकि एक कार्यक्रम के लिए बहुत पुराना है, कार्यक्रम चला नहीं जाएगा और आप की तरह एक त्रुटि संदेश देखेंगे थ्रेड "मुख्य" java.lang.UnsupportedClassVersionError: कुछ/वर्ग/नाम Unsupported major.minor version कुछ
    समाधान के हाल के संस्करण को अद्यतन करना हैJavaऔर सुनिश्चित करें कि कार्यक्रम के लिए .sh या .bat फ़ाइल इसका उपयोग कर रही है।

उपकरण विभिन्न नैदानिक संदेशों को प्रिंट करते हैं:

  • "ERROR" शब्द का उपयोग तब किया जाता है जब कुछ गलत हो गया कि प्रक्रिया पूरी होने में विफल रही। हालांकि यह एक त्रुटि प्राप्त करने के लिए कष्टप्रद है, त्रुटि आपको समस्या से निपटने के लिए मजबूर करती है।
  • "WARNING" शब्द का उपयोग तब किया जाता है जब कुछ गलत हो गया था, लेकिन प्रक्रिया पूरी हो गई थी। ये बहुत दुर्लभ हैं।
  • कुछ और सिर्फ एक अनौपचारिक संदेश है। आप \verbose जोड़ सकते हैंजनरेट DatasetXmlयादासअतिरिक्त जानकारी प्राप्त करने के लिए कमांड लाइन, जो कभी-कभी समस्याओं को हल करने में मदद करती है।

दो उपकरण एक बड़ी मदद हैं, लेकिन आपको अभी भी इस पृष्ठ पर इन सभी निर्देशों को ध्यानपूर्वक पढ़ना होगा और अपने आप को महत्वपूर्ण निर्णय लेना होगा।

जनरेट DatasetXml

  • जनरेट DatasetXml एक कमांड लाइन प्रोग्राम है जो लगभग किसी भी प्रकार के डेटासेट के लिए डेटासेट XML का एक मोटे ड्राफ्ट उत्पन्न कर सकता है।

हम नियमित रूप से अनुशंसा करते हैं कि आप जनरेटडाटासेट का उपयोग करें Xml के बजाय टाइल बनाने के लिएdatasets.xmlक्योंकि हाथ से:

  • जनगणना Xml सेकंड में काम करता है। इसे हाथ से करना कम से कम एक घंटे का काम है, यहां तक कि जब आप जानते हैं कि आप क्या कर रहे हैं।
  • जनगणना Xml बेहतर काम करता है। इसे हाथ से करने के लिए व्यापक ज्ञान की आवश्यकता है कि कैसेERDDAP™कार्य यह संभावना नहीं है कि आप हाथ से बेहतर काम करेंगे। (बॉब सिमोन हमेशा जेनरेटडाटासेट का उपयोग करता है पहले ड्राफ्ट के लिए Xml, और उन्होंने लिखाERDDAP।)
  • जनगणना Xml हमेशा का एक वैध हिस्सा उत्पन्न करता हैdatasets.xml। का कोई भी हिस्साdatasets.xmlयदि आप लिखते हैं तो शायद कम से कम कुछ त्रुटियां होंगी जो रोकती हैंERDDAP™डेटासेट लोड करने से। अक्सर इन समस्याओं का निदान करने के लिए लोगों को घंटे लगते हैं। अपना समय बर्बाद मत करो। जनरेट करना डेटासेट Xml कड़ी मेहनत करते हैं। फिर अगर आप चाहते हैं तो आप हाथ से .xml को परिष्कृत कर सकते हैं।

जब आप GenerateDatasets का उपयोग करते हैं Xml कार्यक्रम:

  • विंडोज पर, पहली बार जब आप GenerateDatasetsXml चलाते हैं, तो आपको जावा के रास्ते को बदलने के लिए टेक्स्ट एडिटर के साथ GenerateDatasetsXml.bat फ़ाइल को संपादित करना होगा। इसलिए विंडोज को मिल सकता हैJava।
  • जनगणना Xml पहले आपको EDDtype निर्दिष्ट करने के लिए कहता है (Erd Dap Dataset प्रकार) डेटासेट का। देखेंडेटासेट प्रकार की सूची (इस दस्तावेज़ में) यह पता लगाने के लिए कि आप किस डेटासेट के लिए उपयुक्त हैं। नियमित EDDtypes के अलावा, कुछ भी हैंविशेष/Pseudo Dataset प्रकार (उदाहरण के लिए, जो एक THREDDS कैटलॉग को क्रॉल करता है, का एक हिस्सा उत्पन्न करने के लिएdatasets.xmlकैटलॉग में प्रत्येक डेटासेट के लिए) ।
  • जनगणना तब Xml आपको उस EDDtype के लिए विशिष्ट प्रश्नों की एक श्रृंखला पूछता है। प्रश्नों के लिए आवश्यक जानकारी इकट्ठाERDDAP™डेटासेट के स्रोत तक पहुंचने के लिए। क्या समझने के लिएERDDAP™इसके लिए पूछ रहा है, EDDtype के लिए प्रलेखन देखें जिसे आप उसी डेटासेट प्रकार पर क्लिक करके निर्दिष्ट करते हैं।डेटासेट प्रकार की सूची

यदि आपको विशेष वर्णों के साथ स्ट्रिंग में प्रवेश करने की आवश्यकता है (उदाहरण के लिए, शुरुआत या अंत में व्हाइटस्पेस वर्ण, गैर-ASCII वर्ण) , दर्ज करेंJSON-style स्ट्रिंग (विशेष पात्रों के साथ बच) । उदाहरण के लिए, सिर्फ एक टैब चरित्र में प्रवेश करने के लिए, "\t" (बाद के डबल उद्धरणों के साथ, जो बताते हैं) में प्रवेश करेंERDDAP™यह एक JSON-शैली स्ट्रिंग है।

  • अक्सर, आपके उत्तरों में से एक यह नहीं होगा कि क्या GenerateDatasetsXml की जरूरत है। फिर आप फिर से कोशिश कर सकते हैं, प्रश्नों के संशोधित उत्तर के साथ, जब तक GenerateDatasets XML सफलतापूर्वक स्रोत डेटा को ढूंढ सकता है और समझ सकता है।
  • यदि आप प्रश्नों का सही उत्तर देते हैं (सही ढंग से) जेनरेट डाटासेट Xml डेटासेट के स्रोत से जुड़ जाएगा और बुनियादी जानकारी इकट्ठा करेगा (उदाहरण के लिए, चर नाम और मेटाडाटा) । डेटासेट के लिए जो स्थानीय से हैंNetCDF .ncसंबंधित फाइलें, जनरेटडाटासेट Xml अक्सर फ़ाइल की ncdump-like संरचना को प्रिंट करेगा जब यह पहली बार फ़ाइल पढ़ता है। यह आपको जेनरेटडासेटएक्सएमएल के माध्यम से बाद के लूप पर बेहतर सवालों का जवाब देने के लिए जानकारी दे सकता है।
  • जनगणना इसके बाद XML उस डेटासेट के लिए डेटासेट XML का एक मोटे ड्राफ्ट उत्पन्न करेगा।
  • नैदानिक जानकारी और डेटासेट XML के मोटे ड्राफ्ट को लिखा जाएगा बड़ाParentDirectory /logs/GenerateDatasetsXml.log.
  • Dataset XML के मोटे ड्राफ्ट को लिखा जाएगा बड़ाParentDirectory /logs/GenerateDatasetsXml.out.

"0 फाइलें" त्रुटि संदेश

यदि आप जेनरेटडेटासेट चलाते हैं Xmlदास, या यदि आप लोड करने की कोशिश करते हैंEDDGridfrom...Files or EDDTableFrom. में फ़ाइलें डेटासेटERDDAP™, और आपको "0 फाइलें" त्रुटि संदेश मिलता है जो दर्शाता है किERDDAP™निर्देशिका में 0 मिलान फ़ाइलों को पाया (जब आपको लगता है कि उस निर्देशिका में फ़ाइलों को मिलान करना है) :

  • जाँच करें कि आपने निर्देशिका का पूरा नाम निर्दिष्ट किया है। यदि आपने नमूना फ़ाइल नाम निर्दिष्ट किया है, तो सुनिश्चित करें कि आपने फ़ाइल का पूरा नाम निर्दिष्ट किया है, जिसमें पूर्ण निर्देशिका नाम शामिल है।

  • जाँच करें कि वास्तव में फ़ाइलें उस निर्देशिका में हैं।

  • निर्देशिका नाम की वर्तनी की जाँच करें।

  • फ़ाइल NameRegex की जाँच करें। वास्तव में, वास्तव में regexes के साथ गलतियों को करना आसान है। परीक्षण प्रयोजनों के लिए, रेगेक्स की कोशिश करें। (इसे देखेंरेगेक्स प्रलेखनऔरRegex ट्यूटोरियल।)

  • जांचें कि वह उपयोगकर्ता जो प्रोग्राम चला रहा है (उदाहरण के लिए, उपयोगकर्ता=tomcat (?) टॉमकैट के लिएERDDAP) उन फ़ाइलों के लिए 'रीड' अनुमति है।

  • कुछ ऑपरेटिंग सिस्टम में (उदाहरण के लिए, SELinux) और सिस्टम सेटिंग्स के आधार पर, जो उपयोगकर्ता ने कार्यक्रम को चलाने के लिए फ़ाइलों की निर्देशिका के लिए अग्रणी डायरेक्टरी की पूरी श्रृंखला के लिए 'रीड' अनुमति होनी चाहिए।

  • यदि आपको कोई समस्या है तो आप हल नहीं कर सकते,अनुरोध समर्थनजितना संभव हो उतना जानकारी के साथ। इसी तरह, अगर ऐसा लगता है कि किसी दिए गए डेटासेट के लिए उपयुक्त EDDटाइप उस डेटासेट के साथ काम नहीं करता है, या यदि कोई उपयुक्त EDD टाइप नहीं है, तो कृपया फ़ाइल करेंगिटहब पर जारीविवरण के साथ (यदि प्रासंगिक हो तो नमूना फ़ाइल) ।  

आपको जेनरेटडाटासेट से आउटपुट संपादित करने की आवश्यकता है Xml इसे बेहतर बनाने के लिए।

 

  • अस्वीकरण: का CHUNKdatasets.xmlMADE BE GenerateDatasets Xml ISN't perfect। आप एक सार्वजनिक में इसे इस्तेमाल करने से पहले XML को पढ़ें और संपादित करेंERDDAP। जनगणना Xml RELIES ON a LOT of RULES-OF-THUMB WHICH AREN'T ALWAYS CORRECT. आप XML के भ्रष्टाचार को बढ़ाने के लिए उत्तरदायी हैं, जिन्हें आप जोड़ना चाहते हैं।ERDDAPएसdatasets.xmlफ़ाइल

    (मज़ा तथ्य: मैं चिल्ला रही नहीं हूँ। ऐतिहासिक कानूनी कारणों के लिए, सभी कैप्स में अस्वीकरण लिखा जाना चाहिए।)

GenerateDatasetsXml का उत्पादन एक मोटे ड्राफ्ट है। आपको हमेशा इसे संपादित करने की आवश्यकता होगी। हमने बनाया है और आउटपुट को तैयार करने के लिए एक बड़ा प्रयास किया है, लेकिन सीमाएँ हैं। अक्सर, आवश्यक जानकारी केवल स्रोत मेटाडाटा से उपलब्ध नहीं है।

एक मूलभूत समस्या यह है कि हम कंप्यूटर प्रोग्राम कह रहे हैं (जनरेट DatasetXml) यदि आपने 100 लोगों को समान कार्य दिया है तो आपको 100 अलग-अलग परिणाम मिलेंगे। कोई भी "right" उत्तर नहीं है। जाहिर है, कार्यक्रम बॉब के दिमाग को पढ़ने के करीब आता है (नहीं) लेकिन फिर भी, यह एक ऑल-अंडरस्टैंडिंग एआई प्रोग्राम नहीं है, सिर्फ एक गुच्छा हेरिस्टिक्स ने एआई-जैसे कार्य करने के लिए मिलकर काम किया। (उस दिन एक ऑल-अंडरस्टैंडिंग एआई प्रोग्राम आ सकता है, लेकिन यह अभी तक नहीं है। अगर यह करता है तो हम मनुष्य की बड़ी समस्याएं हो सकती हैं। क्या आप चाहते हैं?)

  • सूचनात्मक उद्देश्यों के लिए, आउटपुट वैश्विक स्रोत को दर्शाता हैAttributes और चर स्रोतAttributes टिप्पणियों के रूप में।ERDDAP™SourceAttributes को जोड़ती है औरaddAttributes (जो पूर्ववर्ती है) संयुक्त बनाने के लिए उन योगदानों को जो उपयोगकर्ता को दिखाए जाते हैं। (और अन्य विशेषताओं को स्वचालित रूप से लम्बाई, अक्षांश, ऊंचाई, गहराई और समय चर में जोड़ा जाता है जबERDDAP™वास्तव में डेटासेट बनाता है) ।  

  • यदि आप स्रोत को पसंद नहीं करते हैंविशेषण, इसे एक addAttribute जोड़कर ओवरराइट करेंएक ही नाम के साथ लेकिन एक अलग मूल्य (यदि आप इसे हटाना चाहते हैं, तो कोई मूल्य नहीं है) ।  

  • सभीaddAttributesकंप्यूटर-generated सुझाव हैं। उन्हें संपादित करें! यदि आप एक addAttribute पसंद नहीं करते हैं, तो इसे बदल दें।  

  • यदि आप अन्य जोड़ना चाहते हैंaddAttributesउन्हें जोड़ें।  

  • यदि आप बदलाव करना चाहते हैंdestinationNameइसे बदल दें। लेकिन नहीं बदलताsourceNameS.  

  • आप क्रम बदल सकते हैंdataVariableउनमें से किसी को भी हटा दें।

    • तब आप उपयोग कर सकते हैंदास (नीचे देखें) उस डेटासेट के लिए XML को बार-बार परीक्षण करने के लिए यह सुनिश्चित करने के लिए कि परिणामी डेटासेट दिखाई देता है जैसा कि आप चाहते हैं कि यह क्या हैERDDAP।
    • छोटे बदलाव करने के लिए स्वतंत्र महसूस करेंdatasets.xmlउदाहरण के लिए, उत्पन्न होने वाले हिस्से को बेहतर आपूर्ति करनाinfoUrl, सारांश, या शीर्षक।

DonotAdd StandardNames

यदि आप \-doNotAdd StandardNames को एक कमांड लाइन पैरामीटर के रूप में शामिल करते हैं जब आप उत्पन्न होते हैं डेटासेट XML उत्पन्न डेटासेट एक्सएमएल नहीं जोड़ेगाstandard\_nametoaddAttributesकिसी भी वैरिएबल के अलावा अन्य वैरिएबल्स के नाम पर अक्षांश, देशांतर, ऊंचाई, गहराई या समय (जो स्पष्ट हैstandard\_names) । यदि आप उत्पन्न होने से आउटपुट का उपयोग कर रहे हैं तो यह उपयोगी हो सकता है डेटासेट सीधे XMLERDDAP™उत्पादन को संपादित किए बिना, क्योंकि उत्पन्न डेटासेट Xml अक्सर अनुमान लगाता हैstandard\_nameIncorrectly. (ध्यान दें कि हम हमेशा अनुशंसा करते हैं कि आप इसका उपयोग करने से पहले आउटपुट संपादित करेंERDDAP।) इस पैरामीटर का उपयोग अन्य मामूली संबंधित प्रभाव होगा क्योंकि अनुमान लगाया गया हैstandard\_nameअक्सर अन्य प्रयोजनों के लिए उपयोग किया जाता है, उदाहरण के लिए, एक नया बनाने के लिएlong\_name, और रंगबार सेटिंग्स बनाने के लिए।

स्क्रिप्टिंग

कीबोर्ड पर इंटरैक्टिव प्रश्नों का जवाब देने और अतिरिक्त डेटासेट उत्पन्न करने के लिए लूपिंग के विकल्प के रूप में, आप एक डेटासेट उत्पन्न करने के लिए सभी सवालों का जवाब देने के लिए कमांड लाइन तर्क प्रदान कर सकते हैं। जनगणना Xml उन मापदंडों को संसाधित करेगा, आउटपुट फ़ाइल में आउटपुट लिखें, और कार्यक्रम से बाहर निकलें।

इसे स्थापित करने के लिए, पहले इंटरैक्टिव मोड में प्रोग्राम का उपयोग करें और अपना जवाब नीचे लिखें। यहाँ एक आंशिक उदाहरण है: चलो कहते हैं कि आप स्क्रिप्ट चलाते हैं: फिर प्रवेश करें: EDDTableFromAsciiFiles फिर दर्ज करें: /u00/data/ फिर प्रवेश करें: .\\\sc फिर दर्ज करें: /u00/data/sampleFile.asc फिर प्रवेश करें: ISO-8859-1

इसे गैर-इंटरएक्टिव तरीके से चलाने के लिए, इस कमांड लाइन का उपयोग करें: ./GenerateDatasetsXml.sh EDDTableFromAsciiFiles /u00/data/.\\.asc/u00/data/sampleFile.asc ISO-8859-1 इसलिए मूल रूप से, आप कमांड लाइन पर सभी उत्तरों को सूचीबद्ध करते हैं। यह डेटासेट के लिए उपयोगी होना चाहिए जो अक्सर ऐसे तरीके से बदल जाता है जो फिर से चल रहे डेटा जेनरेटसेट्स की आवश्यकता होती है। एक्सएमएल (वास्तव मेंEDDGridFromThreddsCatalog) ।

विवरण:

  • यदि किसी पैरामीटर में एक स्पेस या कुछ विशेष चरित्र होता है, तो पैरामीटर को एक के रूप में एन्कोड करेंJSON-style स्ट्रिंग, उदाहरण के लिए, "स्पेस और दो के साथ मेरा पैरामीटर\nरेखाएं
  • यदि आप एक पैरामीटर के रूप में एक खाली स्ट्रिंग निर्दिष्ट करना चाहते हैं, तो उपयोग करें: कुछ भी नहीं
  • यदि आप किसी पैरामीटर के डिफ़ॉल्ट मान को निर्दिष्ट करना चाहते हैं, तो इसका उपयोग करें: डिफ़ॉल्ट  
  • जनगणना Xml -i का समर्थन करता है डेटासेट XmlName # टैगनाम कमांड लाइन पैरामीटर जो निर्दिष्ट में आउटपुट को सम्मिलित करता हैdatasets.xmlफ़ाइल (डिफ़ॉल्ट है tomcat /content/erddap/datasets.xml) । जनगणना Xml डेटासेट में दो लाइनों के लिए लग रहा है XmlName:
        <!-- Begin GenerateDatasetsXml #*tagName someDatetime* -->  

और

        <!-- End GenerateDatasetsXml #*tagName someDatetime* -->  

और नई सामग्री के साथ उन पंक्तियों के बीच सब कुछ बदल देता है, और कुछ समय बदलता है।

  • -i स्विच केवल संसाधित है (और परिवर्तनdatasets.xmlकेवल बनाया गया है) यदि आप जेनरेटडेटासेट चलाते हैं Xml कमांड लाइन तर्क के साथ जो प्रोग्राम के एक लूप के लिए सभी सवालों के जवाब निर्दिष्ट करते हैं। (ऊपर 'Scripting' देखें।) (यह सोच है: यह पैरामीटर स्क्रिप्ट के साथ उपयोग के लिए है। यदि आप इंटरैक्टिव मोड में प्रोग्राम का उपयोग करते हैं (कीबोर्ड पर टाइपिंग जानकारी) इससे पहले कि आप चाहते हैं, आपको XML के कुछ गलत हिस्से उत्पन्न करने की संभावना है।)
  • यदि शुरुआती और अंत रेखाएं नहीं पाई जाती हैं, तो उन रेखाओं और नई सामग्री को ठीक पहले डाला जाता है</erddapDatasets>।
  • -I भी (पूंजी i) परीक्षण उद्देश्यों के लिए स्विच करें जो -i के समान काम करता है, लेकिन एक फ़ाइल बनाता है जिसे बुलाया जाता हैdatasets.xml समय नहीं बदलताdatasets.xml।
  • जेनरेटडाटासेट एक ही बार में दो प्रक्रियाओं में Xml -i के साथ। वहाँ परिवर्तन का केवल एक सेट रखा जाएगा एक मौका है। गंभीर परेशानी हो सकती है (उदाहरण के लिए, भ्रष्ट फ़ाइलों) ।

यदि आप "GenerateDatasetsXml -verbose" का उपयोग करते हैं, तो यह सामान्य से अधिक नैदानिक संदेशों को प्रिंट करेगा।

विशेष/Pseudo Dataset प्रकार

सामान्य तौर पर, EDDType में विकल्प GenerateDatasets इस दस्तावेज़ में वर्णित EDD प्रकारों का Xml मैच (देखेंडेटासेट प्रकार की सूची) उत्पन्न करनाdatasets.xmlएक विशिष्ट डेटा स्रोत से एक डेटासेट बनाने के लिए भाग लें। कुछ अपवाद और विशेष मामले हैं:

EDDGridसेंध

यह EDDType सभी उत्पन्न करता हैdatasets.xmlबनाने के लिए आवश्यक भागEDDGridसेंधसभी से डेटासेटEDDGridदूरस्थ में डेटासेटERDDAP। आपके पास मूल रखने का विकल्प होगाdatasetIDs (जो कुछ डुप्लिकेट कर सकता हैdatasetIDपहले से ही अपने मेंERDDAP) या नए नाम पैदा करना जो अद्वितीय होगा (लेकिन आम तौर पर मानव पठनीय नहीं हैं) ।  

EDDTableFromErddap

यह EDDType सभी उत्पन्न करता हैdatasets.xmlबनाने के लिए आवश्यक भागEDDTableFromErddapदूरस्थ में सभी EDDTable डेटासेट से डेटासेटERDDAP। आपके पास मूल रखने का विकल्प होगाdatasetIDs (जो कुछ डुप्लिकेट कर सकता हैdatasetIDपहले से ही अपने मेंERDDAP) या नए नाम पैदा करना जो अद्वितीय होगा (लेकिन आम तौर पर मानव पठनीय नहीं हैं) ।  

EDDGridFromThreddsCatalog

यह EDDType सभी उत्पन्न करता हैdatasets.xmlसभी के लिए जरूरत पड़ने वाले हिस्सेEDDGridFromDapडेटासेट जो इसे एक THREDDS के माध्यम से तेजी से क्रॉलिंग द्वारा खोज सकते हैं (उप) सूची THREDDS कैटलॉग URL के कई रूप हैं। यह विकल्प उदाहरण के लिए, इसमें / कैटलॉग के साथ एक THREDDS .xml URL की आवश्यकता है। https://oceanwatch.pfeg.noaa.gov/thredds/catalog/catalog.xml या https://oceanwatch.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/chla/catalog.xml
(a related) HTML catalog is at https://oceanwatch.pfeg.noaa.gov/thredds/Satellite/aggregsatMH/chla/catalog.html जिसके लिए स्वीकार्य नहीं हैEDDGridFromThreddsCatalog). यदि आपके पास समस्या हैEDDGridसेथरेड कैटलॉग:

  • सुनिश्चित करें कि आप जिस URL का उपयोग कर रहे हैं वह मान्य है, इसमें /catalog/, और /catalog.xml के साथ समाप्त होता है।
  • यदि संभव हो, तो सार्वजनिक आईपी पते का उपयोग करें (उदाहरण के लिए, https://oceanwatch.pfeg.noaa.gov ) यूआरएल में, एक स्थानीय संख्यात्मक आईपी पता नहीं (उदाहरण के लिए, https://12.34.56.78 ) । यदि THREDDS केवल स्थानीय संख्यात्मक IP पते के माध्यम से सुलभ है, तो आप उपयोग कर सकते हैं [<ConvertTopublicSourceUrl> (#converttopublicsourceurl) इसलिएERDDAP™हालांकि, उपयोगकर्ता सार्वजनिक पते को देखते हैंERDDAP™स्थानीय संख्यात्मक पते से डेटा प्राप्त होता है।
  • यदि आपको कोई समस्या है तो आप हल नहीं कर सकते,समस्या निवारण युक्तियाँ की जाँच करें
  • इसके लिए निम्न स्तर कोड अब उपयोग करता हैUnidataNetcdf-java catalog क्रॉलर कोड (थर्ड सूची वर्ग) ताकि यह सभी THREDDS कैटलॉग को संभाल सके (जो आश्चर्यजनक रूप से जटिल हो सकता है) धन्यवादUnidataउस कोड के लिए।  
EDDGridLonPM180FromErddapCatalog

यह EDDtype उत्पन्न करता हैdatasets.xmlबनानाEDDGridLonPM180सभी से डेटासेटEDDGridएक में डेटासेटERDDAPइसमें 180 से अधिक लम्बाई मान होते हैं।

  • यदि संभव हो, तो सार्वजनिक आईपी पते का उपयोग करें (उदाहरण के लिए, https://oceanwatch.pfeg.noaa.gov ) यूआरएल में, एक स्थानीय संख्यात्मक आईपी पता नहीं (उदाहरण के लिए, https://12.34.56.78 ) । यदिERDDAP™केवल स्थानीय संख्यात्मक आईपी पते के माध्यम से सुलभ है, आप उपयोग कर सकते हैं [<ConvertTopublicSourceUrl> (#converttopublicsourceurl) इसलिएERDDAP™हालांकि, उपयोगकर्ता सार्वजनिक पते को देखते हैंERDDAP™स्थानीय संख्यात्मक पते से डेटा प्राप्त होता है।  
EDDGridLon0360FromErddapCatalog

यह EDDtype उत्पन्न करता हैdatasets.xmlबनानाEDDGridLon0360सभी से डेटासेटEDDGridएक में डेटासेटERDDAP0 से कम किसी भी देशांतर मान है।

  • यदि संभव हो, तो सार्वजनिक आईपी पते का उपयोग करें (उदाहरण के लिए, https://oceanwatch.pfeg.noaa.gov ) यूआरएल में, एक स्थानीय संख्यात्मक आईपी पता नहीं (उदाहरण के लिए, https://12.34.56.78 ) । यदिERDDAP™केवल स्थानीय संख्यात्मक आईपी पते के माध्यम से सुलभ है, आप उपयोग कर सकते हैं [<ConvertTopublicSourceUrl> (#converttopublicsourceurl) इसलिएERDDAP™हालांकि, उपयोगकर्ता सार्वजनिक पते को देखते हैंERDDAP™स्थानीय संख्यात्मक पते से डेटा प्राप्त होता है।  
EDDsFromFiles

एक प्रारंभ निर्देशिका को देखते हुए, यह निर्देशिका और सभी उपनिर्देशों को विकृत करता है और डेटा फ़ाइलों के प्रत्येक समूह के लिए डेटासेट बनाने की कोशिश करता है जो इसे पाता है।

  • यह मान लेता है कि जब डेटासेट पाया जाता है, तो डेटासेट में सभी उपनिर्देश शामिल हैं।
  • यदि डेटासेट पाया जाता है, तो समान भाई-बहन निर्देशिकाओं को अलग-अलग डेटासेट के रूप में माना जाएगा। (उदाहरण के लिए, 1990 के दशक के लिए निर्देशिका, 2000 के, 2010 के, अलग डेटासेट उत्पन्न करेगा) । उन्हें हाथ से गठबंधन करना आसान होना चाहिए - बस पहले डेटासेट को बदल दें<फ़ाइलDir> माता-पिता निर्देशिका में और बाद में सभी भाई-बहन डेटासेट को हटा दें।
  • यह केवल का एक हिस्सा उत्पन्न करने की कोशिश करेगाdatasets.xmlएक निर्देशिका में फ़ाइल एक्सटेंशन के सबसे आम प्रकार के लिए (.md5 की गिनती नहीं, जिसे अनदेखा किया गया है) । तो, 10 के साथ एक निर्देशिका दी.ncफ़ाइलों और 5 .txt फ़ाइलों के लिए एक डेटासेट उत्पन्न किया जाएगा.ncकेवल फ़ाइलें।
  • यह मानता है कि एक ही एक्सटेंशन के साथ निर्देशिका में सभी फाइलें समान डेटासेट से संबंधित हैं। यदि किसी निर्देशिका में कुछ है.ncSST डेटा और कुछ के साथ फ़ाइलों.ncक्लोरोफिल डेटा के साथ फाइलें, सिर्फ एक नमूना.ncफ़ाइल को पढ़ा जाएगा (SST? क्लोरोफिल?) और सिर्फ एक डेटासेट उस प्रकार की फ़ाइल के लिए बनाया जाएगा। यह डेटासेट शायद एक ही डेटासेट में दो प्रकार की फ़ाइलों को लोड करने की कोशिश करने की जटिलताओं के कारण लोड हो सकता है।
  • यदि निर्देशिका में सबसे आम विस्तार के साथ 4 से अधिक फाइलें हैं, तो यह मान लेता है कि वे डेटा फाइलें नहीं हैं और सिर्फ निर्देशिका छोड़ते हैं।
  • यदि निर्देशिका में 4 या अधिक फाइलें हैं, लेकिन यह सफलतापूर्वक एक हिस्सा उत्पन्न नहीं कर सकता हैdatasets.xmlफ़ाइलों के लिए (उदाहरण के लिए, एक असमर्थित फ़ाइल प्रकार) यह उत्पन्न करेगाEDDTableFromFileNamesफ़ाइलों के लिए डेटासेट।
  • निदान के अंत में यह लॉग फ़ाइल में लिखा गया है, ठीक पहलेdatasets.xmlयह सभी उपनिर्देशों को पार करके एकत्रित सूचना के सारांश के साथ एक तालिका मुद्रित करेगा। तालिका प्रत्येक उपनिर्देशिका को सूचीबद्ध करेगी और सबसे आम प्रकार की फ़ाइल एक्सटेंशन, कुल संख्या फ़ाइलों को इंगित करेगी, और इन फ़ाइलों के लिए किस प्रकार का डेटासेट बनाया गया था। (यदि कोई हो) । यदि आप एक जटिल, गहराई से घोंसले वाली फ़ाइल संरचना का सामना कर रहे हैं, तो चल रहे GenerateDatasets पर विचार करें EDDtype=EDDsFromFiles के साथ Xml सिर्फ इस जानकारी उत्पन्न करने के लिए,
  • यह विकल्प डेटा फ़ाइलों के किसी दिए गए समूह के लिए सर्वश्रेष्ठ EDDtype का अनुमान लगाने का एक बड़ा काम नहीं कर सकता है, लेकिन यह त्वरित, आसान और एक कोशिश के लायक है। यदि स्रोत फाइलें उपयुक्त हैं, तो यह अच्छी तरह से काम करता है और यह एक अच्छा पहला कदम है जो इसे उत्पन्न करता है।datasets.xmlबहुत सारे उपनिर्देशों के साथ एक फ़ाइल सिस्टम के लिए, प्रत्येक अलग डेटासेट से डेटा फ़ाइलों के साथ।  
EDDTableFromEML और EDDTableFromEMLBatch

ये विशेष EDDType उत्पन्न करता हैdatasets.xmlबनानाEDDTableFromAsciiFilesप्रत्येक तालिका से डेटासेट एक में वर्णित हैपारिस्थितिक मेटाडाटा भाषाXML फ़ाइल "बैच" संस्करण स्थानीय या दूरस्थ निर्देशिका में सभी EML फ़ाइलों पर काम करता है। कृपया अलग देखेंEDDTableFromEML के लिए प्रलेखन।  

EDDTableFromInPort

यह विशेष EDDtype उत्पन्न करता हैdatasets.xmlबनानाEDDTableFromAsciiFilesसूचना से डेटासेटInport-xmlफ़ाइल यदि आप स्रोत डेटा फ़ाइल तक पहुंच सकते हैं (इनपोर्ट-xml फ़ाइल में clues होना चाहिए जहां इसे खोजने के लिए) , आप एक कामकाजी डेटासेट बना सकते हैंERDDAP।

निम्नलिखित चरणों में बताया गया है कि कैसे GenerateDatasets का उपयोग करने के लिए Xml एक inport-xml फ़ाइल के साथ आदेश में एक कार्य डेटासेट प्राप्त करने के लिएERDDAP।

  1. एक बार जब आपके पास इनपोर्ट-xml फ़ाइल तक पहुंच होती है (या तो एक यूआरएल या एक स्थानीय फ़ाइल के रूप में) : run GenerateDatasets Xml, EDDtype=EDDTableFromInPort निर्दिष्ट करें, inport-xml URL या पूर्ण फ़ाइल नाम निर्दिष्ट करें, जो निर्दिष्ट करेंChild=0, और अन्य अनुरोधित जानकारी निर्दिष्ट करें (यदि ज्ञात हो) । (इस बिंदु पर, आपको स्रोत डेटा फ़ाइल रखने या उसका नाम निर्दिष्ट करने की आवश्यकता नहीं है।) जोChild=0 सेटिंग जनरेटडाटासेट बताती है XML के लिए जानकारी लिखने के लिए सब (d)<इकाई-attribute-information><Inport-xml file (यदि कोई हो) । यह एक पृष्ठभूमि सूचना सारांश को भी प्रिंट करता है, जिसमें सभी डाउनलोड-url को इनपोर्ट-xml फ़ाइल में सूचीबद्ध किया गया है।
  2. सभी जानकारी के माध्यम से देखें (पृष्ठभूमि जानकारी है कि GenerateDatasets सहित XML प्रिंट) और डाउनलोड-url पर जाएं (s) स्रोत डेटा फ़ाइल खोजने की कोशिश करने के लिए (s) । यदि आप इसे पा सकते हैं (उन्हें) इसे डाउनलोड करें (उन्हें) एक निर्देशिका में जो सुलभ हैERDDAP। (यदि आप किसी भी स्रोत डेटा फ़ाइलों को नहीं पा सकते हैं, तो कार्यवाही में कोई बिंदु नहीं है।)
  3. रन जेनरेट डेटासेट फिर से XML। यदि स्रोत डेटा फ़ाइल इनपोर्ट-xml फ़ाइल के एक से मेल खाती है<इकाई-attribute-information><इकाई>'s, निर्दिष्ट करें जोChild= thatEntity'sNumber (उदाहरण के लिए, 1, 2, 3, ...) ।ERDDAP™इकाई की जानकारी में नामों के लिए स्रोत डेटा फ़ाइल में कॉलम नामों से मिलान करने की कोशिश करेंगे और किसी भी असंतुष्टता को स्वीकार / अस्वीकार / निर्धारित करने के लिए प्रेरित करेंगे। या, अगर इनपोर्ट-xml फ़ाइल में कोई नहीं है<इकाई-attribute-information><इकाई>'s, निर्दिष्ट करें जोChild=0.
  4. के भाग मेंdatasets.xmlइसे जेनरेटडाटासेट द्वारा बनाया गया था Xml, revise [global]<addAttributes> (#Global-attributes) जैसा कि आवश्यक/वांछनीय है।
  5. के भाग मेंdatasets.xmlthat was made by GenerateDatasetsXml, add/revise.<dataVariable> (#datavariable) प्रत्येक चर का वर्णन करने के लिए आवश्यक/वांछनीय जानकारी। सुनिश्चित करें कि आप प्रत्येक चर की सही पहचान करें [<sourceName> (#sourcename) (जैसा कि यह स्रोत में दिखाई देता है) , [<destinationName> (#Destinationname) (जिसकी तुलना में अनुमत वर्णों पर अधिक सीमाएं हैंsourceName) , [<यूनिट> (#units) (विशेष रूप से अगर यह हैसमय या समय-समय परिवर्तनशीलजहां इकाइयों को प्रारूप निर्दिष्ट करने की आवश्यकता होती है) , और [<missing\_value> (#missing_value) ,
  6. जब आप खत्म हो जाते हैं, तो बार-बार उपयोग करेंदासटूल को जल्दी से देखने के लिए कि क्या डेटासेट विवरण मान्य है और यदि डेटासेट में दिखाई देगाERDDAP™जैसा कि आप चाहते हैं।  

अगर इनपोर्ट का उपयोग करने वाले समूह अपने डेटासेट को दस्तावेज करने के लिए भी उपयोग करेंगे तो यह बहुत अच्छा होगा।ERDDAP™वास्तविक डेटा उपलब्ध कराने के लिए:

  • ERDDAP™एक ऐसा समाधान है जिसका इस्तेमाल अभी किया जा सकता है ताकि आप पूरा कर सकेंNOAA'अनुसंधान परिणाम (PARR) आवश्यकताएंअभी नहीं, भविष्य में कुछ अस्पष्ट समय पर।
  • ERDDAP™उपयोगकर्ताओं के लिए उपलब्ध वास्तविक डेटा बनाता है, न केवल मेटाडाटा। (डेटा के बिना मेटाडाटा क्या अच्छा है?)
  • ERDDAP™मेटाडाटा का समर्थन (विशेष रूप से, चर की इकाइयां) , कुछ अन्य डेटा सर्वर सॉफ्टवेयर के विपरीत माना जाता है। (मेटाडाटा के बिना डेटा क्या अच्छा है?) सॉफ़्टवेयर का उपयोग करने के लिए जो मेटाडाटा का समर्थन नहीं करता है, डेटा को गलत तरीके से जोड़ने और दुरुपयोग करने के लिए आमंत्रित करना है।
  • ERDDAP™कुछ अन्य सॉफ्टवेयरों के विपरीत मुक्त और खुला स्रोत सॉफ्टवेयर है। का विकासERDDAP™पहले से ही भुगतान किया जाता है। समर्थनERDDAP™उपयोगकर्ता मुफ्त है।
  • ERDDAPअपने समूह को प्रतिबिंबित करने और हाइलाइट करने के लिए आसानी से अनुकूलित किया जा सकता है (नहींERDयाERDDAP) ।
  • ERDDAP™सभी डेटासेट तक पहुंचने का एक सुसंगत तरीका प्रदान करता है।
  • ERDDAP™कई प्रकार की डेटा फ़ाइलों और रिलेशनल डेटाबेस से डेटा पढ़ सकते हैं।
  • ERDDAP™डेटासेट सहित बड़े डेटासेट से निपट सकते हैं जहां स्रोत डेटा कई डेटा फ़ाइलों में है।
  • ERDDAP™कई प्रकार की डेटा फ़ाइलों को डेटा लिख सकते हैं, उपयोगकर्ता के अनुरोध पर, जिसमें नेटसीडीएफ, ईएसआरआई जैसे वैज्ञानिक डेटा फ़ाइल प्रकार शामिल हैं।ODV .txt।
  • ERDDAP™उपयोगकर्ता के विनिर्देशों के आधार पर डेटा के सबसेट के कस्टम ग्राफ और मानचित्र बना सकते हैं।
  • ERDDAP™छवि, वीडियो या ऑडियो फ़ाइलों के संग्रह जैसे गैर-डाटा डेटासेट से निपट सकते हैं।
  • ERDDAP™स्थापित किया गया है और इस्तेमाल किया गया हैदुनिया भर में 60 से अधिक संस्थान
  • ERDDAP™भीतर उपयोग के लिए अनुशंसित डेटा सर्वरों में से एक के रूप में सूचीबद्ध किया गया हैNOAAमेंNOAAडेटा एक्सेस प्रक्रियात्मक निर्देश, कुछ अन्य सॉफ्टवेयर के विपरीत माना जाता है।
  • ERDDAP™का एक उत्पाद हैNMFS/NOAAइसके भीतर उपयोग करनाNMFSऔरNOAAके लिए गर्व का एक बिंदु होना चाहिएNMFSऔरNOAA।

कृपया देनाERDDAP™कोशिश करो। यदि आपको मदद की आवश्यकता है, तो कृपया एक संदेश पोस्ट करेंERDDAP™गूगल समूह।  

AddFillValueAttributes

यह विशेष EDDType विकल्प एक डेटासेट प्रकार नहीं है। यह एक उपकरण है जो कुछ डेटासेट में कुछ चरों के लिए \FillValue विशेषताओं को जोड़ सकता है। देखेंAddFillValueAttributes।  

ढूँढना समय

यह विशेष EDDType विकल्प एक डेटासेट प्रकार नहीं है। इसके बजाय, यह जनरेटडाटासेट बताता है Xml ग्रिड के एक संग्रह के माध्यम से खोज करने के लिए.nc (संबंधित) फ़ाइलों को डुप्लिकेट समय मूल्यों के साथ फ़ाइलों की एक सूची खोजने और मुद्रित करने के लिए। जब यह समय मान को देखता है, तो यह उन्हें मूल इकाइयों से मूल इकाइयों में बदल देता है"seconds since 1970-01-01"यदि विभिन्न फ़ाइल विभिन्न इकाइयों स्ट्रिंग का उपयोग करती हैं। आपको प्रारंभिक निर्देशिका प्रदान करने की आवश्यकता है (साथ या पीछे slash के बिना) , फ़ाइल का नाम नियमित अभिव्यक्ति (उदाहरण:.nc ) , और फ़ाइलों में समय चर का नाम।  

एनसीडंप

यह विशेष EDDType विकल्प एक डेटासेट प्रकार नहीं है। इसके बजाय, यह जनरेटडाटासेट बताता है XML प्रिंट करने के लिएएनसीडंपएक की तरह printout.nc,.ncएमएल, या.hdfफ़ाइल यह वास्तव में netcdf-java का उपयोग करता हैएनसीडंप, जो एनसीडंप के सी संस्करण की तुलना में अधिक सीमित उपकरण है। यदि आप इस विकल्प का उपयोग करते हैं, तो GenerateDatasetsXml आपको विकल्पों में से एक का उपयोग करने के लिए कहेंगे: "-h" (हेडर) , "सी" (vars समन्वय) , "vall" (डिफ़ॉल्ट) , "v var1; var2", "v var1" (0,0:10,0:20) "। यह उपयोगी है क्योंकि बिना एनसीडंप के यह जानना मुश्किल है कि क्या है?.nc,.ncएमएल, या.hdfफ़ाइल और इस प्रकार कौन से EDDType को आपको जनरेटडाटासेट के लिए निर्दिष्ट करना चाहिए एक्सएमएल एक के लिए.ncएमएल फ़ाइल, यह परिणाम के लिए ncdump आउटपुट प्रिंट करेगा.ncएमएल फ़ाइल परिवर्तन अंतर्निहित पर लागू.ncया.hdfफ़ाइल  

दास

  • दास एक कमांड लाइन प्रोग्राम है जिसे आप एक नए डेटासेट के लिए XML में पहला प्रयास बनाने के बाद उपयोग कर सकते हैंdatasets.xml। DasDds के साथ, आप XML को बार-बार परीक्षण और परिष्कृत कर सकते हैं। जब आप DasDds कार्यक्रम का उपयोग करते हैं:
    1. विंडोज पर, पहली बार जब आप DasDds चलाते हैं, तो आपको DasDds को संपादित करने की आवश्यकता है। जावा को पथ बदलने के लिए पाठ संपादक के साथ बल्लेबाजी फ़ाइल। इसलिए विंडोज को मिल सकता हैJava।
    2. DasDds आप के लिए पूछता हैdatasetIDडेटासेट के लिए आप काम कर रहे हैं।
    3. DasDds उस के साथ डेटासेट बनाने की कोशिश करता हैdatasetID।
      • DasDds हमेशा बहुत सारे नैदानिक संदेशों को प्रिंट करता है। यदि आप "DasDds -verbose" का उपयोग करते हैं, तो DasDds सामान्य से अधिक नैदानिक संदेशों को प्रिंट करेगा।
      • सुरक्षा के लिए, DasDd हमेशा सभी कैश डेटासेट जानकारी को हटा देता है (फ़ाइलें) डेटासेट बनाने से पहले डेटासेट के लिए। यह एक सेटिंग के बराबर हैकठोर झंडाइसलिए समेकित डेटासेट के लिए, आप डेटा निर्माता को खोजने वाली फ़ाइलों की संख्या को सीमित करने के लिए अस्थायी रूप से फ़ाइलNameRegex को समायोजित करना चाहते हैं।
      • यदि डेटासेट लोड करने में विफल रहता है (किसी भी कारण के लिए) , DasDds रोक देंगे और आपको पहली त्रुटि के लिए त्रुटि संदेश दिखाएंगे जो इसे ढूंढता है। क्या समस्या हो सकती है यह अनुमान लगाने की कोशिश मत करो। ध्यान से ERROR संदेश पढ़ें।
        यदि आवश्यक हो, तो अधिक clues और जानकारी प्राप्त करने के लिए पूर्ववर्ती नैदानिक संदेशों को पढ़ें।
      • इस समस्या को हल करने की कोशिश करने के लिए डेटासेट के XML में बदलाव करें
        और DasDds फिर से डेटासेट बनाने की कोशिश करते हैं।
      • यदि आप प्रत्येक समस्या को बार-बार हल करते हैं, तो आप अंततः सभी समस्याओं को हल करेंगे
        और डेटासेट लोड हो जाएगा।
    4. सभी DasDds उत्पादन (निदान और परिणाम) स्क्रीन पर लिखा जाता है और बड़ाParentDirectory /logs/DasDds.log.
    5. यदि DasDds डेटासेट बना सकता है, तो DasDds आपको दिखाएंगे।.das (डेटासेट विशेषता संरचना) ,.dds (Dataset Descriptor संरचना) , औरटाइमगैप (समय अंतराल) अपनी स्क्रीन पर डेटासेट के लिए जानकारी और उन्हें लिखने के लिए बड़ाParentDirectory /logs/DasDds.out.
    6. अक्सर, आप डेटासेट के मेटाडाटा को साफ करने और DasDds को फिर से चलाने के लिए डेटासेट के XML में कुछ छोटा बदलाव करना चाहते हैं।

बोनस तृतीय-पक्ष टूल:ERDDAPहिन्दी

ERDDAP-lint आयरिश मरीन इंस्टीट्यूट के रॉब फुलर और एडम लीडबेटर का एक कार्यक्रम है जिसका उपयोग आप अपने मेटाडाटा को बेहतर बनाने के लिए कर सकते हैं।ERDDAP™डेटासेटERDDAP-lint "contains नियमों और अपने खिलाफ कुछ सत्यापन परीक्षण चलाने के लिए एक सरल स्थिर वेब अनुप्रयोगERDDAP™सर्वर सभी परीक्षण वेब ब्राउज़र में चल रहे हैं। लाइक[यूनिक्स / लिनक्स लिंट टूल](https://en.wikipedia.org/wiki/Lint_(software)आप मौजूदा नियमों को संपादित कर सकते हैं या नए नियमों को जोड़ सकते हैं। देखेंERDDAPहिन्दीअधिक जानकारी के लिए।

यह उपकरण विशेष रूप से डेटासेट के लिए उपयोगी है जिसे आपने कुछ समय पहले बनाया था और अब अपने वर्तमान मेटाडाटा वरीयताओं के साथ अप-टू-डेट लाना चाहते हैं। उदाहरण के लिए, जनरेटडाटासेट के शुरुआती संस्करण एक्सएमएल ने वैश्विक बनाने में कोई प्रयास नहीं कियाcreator\_name,creator\_email, निर्माता \_type, याcreator\_urlमेटाडाटा आप उपयोग कर सकते हैंERDDAPउन मेटाडाटा विशेषताओं की कमी वाले डेटासेट की पहचान करने के लिए -lint।

इस उपकरण को बनाने और इसे उपलब्ध कराने के लिए रोब और एडम के लिए धन्यवादERDDAP™समुदाय।  

मूल संरचनाdatasets.xmlफ़ाइल

एक में आवश्यक और वैकल्पिक टैग की अनुमतिdatasets.xmlफ़ाइल (और वे समय की संख्या दिखाई दे सकते हैं) नीचे दिखाया गया है। व्यवहार में, आपकाdatasets.xmlबहुत कुछ होगा<डेटासेट> के टैग और केवल दूसरे टैग का उपयोग भीतर<आवश्यकता के रूप में erddapDatasets>।

 <?xml version="1.0" encoding="ISO-8859-1" ?>
 <erddapDatasets>
   <angularDegreeUnits>...</angularDegreeUnits> <!-- 0 or 1 -->
   <angularDegreeTrueUnits>...</angularDegreeTrueUnits> <!-- 0 or 1 -->
   <cacheMinutes>...</cacheMinutes> <!-- 0 or 1 -->
   <commonStandardNames>...</commonStandardNames> <!-- 0 or 1 -->
   <convertInterpolateRequestCSVExample /> <!-- 0 or more -->
   <convertInterpolateDatasetIDVariableList /> <!-- 0 or more -->
   <convertToPublicSourceUrl /> <!-- 0 or more -->
   <decompressedCacheMaxGB>...</decompressedCacheMaxGB> <!-- 0 or 1 -->
   <decompressedCacheMaxMinutesOld>...</decompressedCacheMaxMinutesOld> <!-- 0 or 1 -->
   <drawLandMask>...</drawLandMask> <!-- 0 or 1 -->
   <emailDiagnosticsToErdData>...</emailDiagnosticsToErdData> <!-- 0 or 1 -->
   <graphBackgroundColor>...</graphBackgroundColor> <!-- 0 or 1 -->
   <ipAddressMaxRequests>...</ipAddressMaxRequests> <!-- 0 or 1 -->
   <ipAddressMaxRequestsActive>...<ipAddressMaxRequestsActive> <!-- 0 or 1 -->
   <ipAddressUnlimited>...<ipAddressUnlimited> <!-- 0 or 1 -->
   <loadDatasetsMinMinutes>...</loadDatasetsMinMinutes> <!-- 0 or 1 -->
   <loadDatasetsMaxMinutes>...</loadDatasetsMaxMinutes> <!-- 0 or 1 -->
   <logLevel>...</logLevel> <!-- 0 or 1 -->
   <nGridThreads>...</nGridThreads> <!-- 0 or 1 -->
   <nTableThreads>...</nTableThreads> <!-- 0 or 1 -->
   <palettes>...</palettes> <!-- 0 or 1 -->
   <partialRequestMaxBytes>...</partialRequestMaxBytes> <!-- 0 or 1 -->
   <partialRequestMaxCells>...</partialRequestMaxCells> <!-- 0 or 1 -->
   <requestBlacklist>...</requestBlacklist> <!-- 0 or 1 -->
   <slowDownTroubleMillis>...</slowDownTroubleMillis> <!-- 0 or 1 -->
   <subscriptionEmailBlacklist>...</subscriptionEmailBlacklist> <!-- 0 or 1 -->
   <unusualActivity>...</unusualActivity> <!-- 0 or 1 -->
   <updateMaxEvents>...</updateMaxEvents> <!-- 0 or 1 -->

   <standardLicense>...</standardLicense> <!-- 0 or 1 -->
   <standardContact>...</standardContact> <!-- 0 or 1 -->
   <standardDataLicenses>...</standardDataLicenses> <!-- 0 or 1 -->
   <standardDisclaimerOfEndorsement>...</standardDisclaimerOfEndorsement> <!-- 0 or 1 -->
   <standardDisclaimerOfExternalLinks>...</standardDisclaimerOfExternalLinks> <!-- 0 or 1 -->
   <standardGeneralDisclaimer>...</standardGeneralDisclaimer> <!-- 0 or 1 -->
   <standardPrivacyPolicy>...</standardPrivacyPolicy> <!-- 0 or 1 -->
   <startHeadHtml5>...</startHeadHtml5> <!-- 0 or 1 -->
   <startBodyHtml5>...</startBodyHtml5> <!-- 0 or 1 -->
   <theShortDescriptionHtml>...</theShortDescriptionHtml> <!-- 0 or 1 -->
   <endBodyHtml5>...</endBodyHtml5> <!-- 0 or 1 -->

   <user username="..." password="..." roles="..." /> <!-- 0 or more -->

   <dataset>...</dataset> <!-- 1 or more -->
 </erddapDatasets>

यह संभव है कि भविष्य में अन्य एन्कोडिंग की अनुमति होगी, लेकिन अब तक, केवल ISO-8859-1 की सिफारिश की जाती है।  

XInclude

संस्करण 2.25 में नया XInclude के लिए समर्थन है। इसके लिए आपको एसएएक्स पार्सर का उपयोग करना होगा<SaxParser<अपने सेटअप.xml में /useSaxParser>। यह आपको अपनी फ़ाइल में प्रत्येक डेटासेट लिखने की अनुमति दे सकता है, फिर उन्हें मुख्य में शामिल करेंdatasets.xml, डेटासेट परिभाषाओं के हिस्सों का पुन: उपयोग करें, या दोनों। यदि आप एक उदाहरण देखना चाहते हैं, तो,EDDTestDataset.javaXInclude को चर परिभाषाओं का पुन: उपयोग करने के लिए सेट करें।  

नोट्स

साथ काम करनाdatasets.xmlफ़ाइल एक गैर-trivial परियोजना है। कृपया इन सभी नोटों को ध्यान से पढ़ें। जब आप चाहें तोडेटासेट प्रकार, कृपया ध्यान से इसका विस्तृत विवरण पढ़ें।  

डेटासेट प्रकार का चयन करना

ज्यादातर मामलों में, सिर्फ एक हीERDDAP™डेटासेट प्रकार जो किसी दिए गए डेटा स्रोत के लिए उपयुक्त है। कुछ मामलों में (उदाहरण के लिए.ncफ़ाइलें) लेकिन आम तौर पर उनमें से एक निश्चित रूप से सबसे अच्छा है। आपको जो पहला और सबसे बड़ा निर्णय करना चाहिए वह है: यह बहुआयामी सरणी के एक समूह के रूप में डेटासेट के इलाज के लिए उपयुक्त है (अगर ऐसा लगता हैEDDGridडेटासेट प्रकार) या डेटा की डेटाबेस जैसी तालिका के रूप में (अगर ऐसा लगता हैEDDTable Dataset प्रकार) ।  

जैसा है डेटा की सेवा करना

आम तौर पर, डेटा स्रोत को संशोधित करने की कोई आवश्यकता नहीं है (उदाहरण के लिए, फ़ाइलों को कुछ अन्य फ़ाइल प्रकार में परिवर्तित करें) इतनाERDDAP™यह सेवा कर सकते हैं। मान्यताओं में से एकERDDAP™यह है कि डेटा स्रोत के रूप में प्रयोग किया जाएगा। आमतौर पर यह ठीक काम करता है। कुछ अपवाद हैं:

  • रिलेशनल डेटाबेस और Cassandra --ERDDAP™सीधे संबंधिक डेटाबेस और Cassandra से डेटा की सेवा कर सकते हैं। लेकिन सुरक्षा, लोड संतुलन और प्रदर्शन मुद्दों के लिए, आप एक ही डेटा के साथ एक और डेटाबेस स्थापित करने या डेटा को बचाने के लिए चुन सकते हैंNetCDFv3.ncफ़ाइलें और हैERDDAP™डेटा को नए डेटा स्रोत से परोसें। देखेंEDDTableFromDatabaseऔरEDDTableFromCassandra
  • समर्थित डेटा स्रोत नहीं --ERDDAP™बड़ी संख्या में डेटा स्रोतों का समर्थन कर सकते हैं, लेकिन दुनिया 1000 के दशक से भरी हुई है। (लाखों?) विभिन्न डेटा स्रोतों (विशेष रूप से, डेटा फ़ाइल संरचना) । अगरERDDAP™अपने डेटा स्रोत का समर्थन नहीं करता है:
    • यदि डेटा स्रोत हैNetCDF .ncफ़ाइलें, आप उपयोग कर सकते हैंएनसीएमएलडेटा फ़ाइलों को ऑन-द-फ्लाई संशोधित करने के लिए, या उपयोग करेंNCOडेटा फ़ाइलों को स्थायी रूप से संशोधित करने के लिए।
    • आप डेटा को डेटा स्रोत प्रकार में लिख सकते हैं किERDDAP™समर्थनNetCDF-3.ncफाइलें एक अच्छी, सामान्य सिफारिश हैं क्योंकि वे द्विआधारी फाइलें हैं जोERDDAP™बहुत जल्दी पढ़ सकते हैं। सारणीबद्ध डेटा के लिए, डेटा को संग्रह में संग्रहीत करने पर विचार करें.ncफ़ाइलें जो उपयोग करती हैंCF Discrete Sampling Geometries (DSG) Contiguous Ragged Array डेटा संरचनाओं और इतने के साथ संभाला जा सकता हैERDDAP'EDDTableFromNcCFFiles). यदि वे तार्किक रूप से व्यवस्थित हैं (प्रत्येक अंतरिक्ष और समय के एक हिस्से के लिए डेटा के साथ) ,ERDDAP™उनमें से बहुत जल्दी डेटा निकाल सकते हैं।
    • आप अनुरोध कर सकते हैं कि उस डेटा स्रोत के लिए समर्थन जोड़ा जा सकता हैERDDAP™ईमेल द्वारा क्रिस जॉन at noaa.gov.
    • आप अपने आप को संभालने के लिए कोड लिखकर उस डेटा स्रोत के लिए समर्थन जोड़ सकते हैं। देखेंThe number of theERDDAP™प्रोग्रामर गाइड
  • गति -ERDDAP™कुछ डेटा स्रोतों से डेटा को दूसरों की तुलना में बहुत तेजी से पढ़ सकते हैं। उदाहरण के लिए, पढ़नाNetCDFv3.ncASCII फ़ाइलों को तेजी से पढ़ने और पढ़ने की गति धीमी है। और अगर वहाँ एक बड़ा है (>1000) विशाल (>10,000) स्रोत डेटा फ़ाइलों की संख्या,ERDDAP™कुछ डेटा अनुरोधों को धीरे-धीरे जवाब देंगे। आमतौर पर, अंतर मनुष्यों के लिए ध्यान देने योग्य नहीं है। हालांकि, अगर आपको लगता हैERDDAP™किसी दिए गए डेटासेट के लिए धीमा है, आप डेटा को अधिक कुशल सेटअप में लिखकर समस्या को हल करने का विकल्प चुन सकते हैं। (आमतौर पर: कुछ, अच्छी तरह से संरचित,NetCDFv3.ncफ़ाइलें) । सारणीबद्ध डेटा के लिए देखेंयह सलाह।  

हिंट

डेटासेट में कार्य डेटासेट विवरण की एक प्रति बनाकर अक्सर XML को डेटासेट के लिए उत्पन्न करना आसान होता है।

एन्कोडिंग विशेष वर्ण

चूंकिdatasets.xmlएक XML फ़ाइल है, आप MUSTऔर एन्कोड"&", "<"&amp" के रूप में किसी भी सामग्री में ",", "<", और ">". Wrong:<शीर्षक> समय और ज्वार<शीर्षक सही:<शीर्षक> Time & Tides<शीर्षक  

XML syntax त्रुटियों को बर्दाश्त नहीं करता है

डेटासेट.xml फ़ाइल को संपादित करने के बाद, यह सत्यापित करने का एक अच्छा विचार है कि परिणाम हैअच्छी तरह से निर्मित XMLXML टेक्स्ट को XML चेकर में पेस्ट करकेxmlvalidation।  

समस्या निवारण युक्तियाँ

  • अन्य तरीके डेटासेट के साथ समस्याओं का निदान करने के लिए
    दो मुख्य के अलावाउपकरण,
  • लॉग-इनसभी के साथ एक लॉग फ़ाइल हैERDDAPनैदानिक संदेश
  • The The most of theदैनिक रिपोर्टस्टेटस पेज की तुलना में अधिक जानकारी है, जिसमें डेटासेट की एक सूची शामिल है जो लोड नहीं हुई थी और अपवाद (त्रुटियां) वे उत्पन्न हुए।
  • The The most of theस्थिति पृष्ठजांच करने का एक त्वरित तरीका हैERDDAPकिसी भी वेब ब्राउज़र से स्थिति। इसमें डेटासेट की एक सूची शामिल है जो लोड नहीं हुई थी (हालांकि संबंधित अपवाद नहीं हैं) और टास्कथ्रेड सांख्यिकी (प्रगति दर्शानाEDDGridकॉपीऔरEDDTableCopyडेटासेट और कोई भीEDDGridसेफिलयाEDDTableFromFilesडेटासेट जो उपयोग करते हैंकैशFromUrl (लेकिन कैश नहीं आकार जीबी) ) ।
  • यदि आप अटक जाते हैं, तो हमें देखेंअतिरिक्त समर्थन प्राप्त करने पर अनुभाग।  

विशेष चर

  • देशांतर, अक्षांश, ऊंचाई (या गहराई) समय (LLAT) चर destinationNameएस विशेष हैं।
  • सामान्य में:
    • LLAT चर के लिए जाना जाता हैERDDAP™यदि अक्ष चर है (के लिएEDDGridडेटासेट) या डेटा चर (EDDTable Datasets के लिए) destinationName"longitude", "latitude", "altitude", "depth", या "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "altitude", "depth", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "atitude", "titude", "atitude", "titude", "atitude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", "titude", ""time"।
    • जब भी संभव हो तो हम इन चरों के लिए इन मानक नामों का उपयोग करने के लिए प्रोत्साहित करते हैं। उनमें से कोई भी आवश्यक नहीं है। यदि आप इन विशेष वेरिएबल नामों का उपयोग नहीं करते हैं, तो आप इन विशेष वेरिएबल नामों का उपयोग नहीं करते हैं।ERDDAP™उनके महत्व को नहीं पहचानेगा। उदाहरण के लिए, एलएलएटी चर को विशेष रूप से मेक ए ग्राफ द्वारा इलाज किया जाता है ( datasetID ग्राफ़) यदि X अक्ष चर "लंबाई" है और Y अक्ष चर " अक्षांश" है, तो आपको एक नक्शा मिलेगा (एक मानक प्रक्षेपण का उपयोग करके और एक भूमि मुखौटा, राजनीतिक सीमाओं आदि के साथ।) ग्राफ के बजाय।
    • ERDDAP™स्वचालित रूप से कई मेटाडाटा को LLAT चर में जोड़ देगा (उदाहरण के लिए, "ioos\_category","यूनिट", और कई मानकों से संबंधित विशेषताओं जैसे "\_CoordinateAxistype") ।
    • ERDDAP™स्वचालित रूप से, ऑन-द-फ्लाई, चयनित डेटा सबसेट के एलएलएटी मूल्यों से संबंधित कई वैश्विक मेटाडाटा जोड़ें (उदाहरण के लिए, "geospace \_lon\min") ।
    • इन मेटाडाटा मानकों का समर्थन करने वाले ग्राहक समय और स्थान पर डेटा को तैनात करने के लिए अतिरिक्त मेटाडाटा का लाभ उठाने में सक्षम होंगे।
    • ग्राहकों को उन प्रश्नों को उत्पन्न करना आसान होगा जिनमें एलएलएटी वेरिएबल्स शामिल हैं क्योंकि वेरिएबल के नाम सभी प्रासंगिक डेटासेट्स में समान हैं।
  • "longitude" चर और "latitude" चर के लिए:
    • उपयोगdestinationNames "longitude" और "latitude" केवल अगरयूनिटक्रमशः डिग्री \_east और डिग्री \_north हैं। यदि आपका डेटा इन आवश्यकताओं को पूरा नहीं करता है, तो विभिन्न परिवर्तनीय नामों का उपयोग करें (उदाहरण के लिए, x, y, lonRadians, latRadians) ।
    • यदि आपके पास विभिन्न इकाइयों में व्यक्त Longitude और अक्षांश डेटा है और इस प्रकार विभिन्न इकाइयों के साथdestinationNameउदाहरण के लिए, lonRadians और latRadians, एक Graph बनाओ ( datasetID ग्राफ़) ग्राफ़ बना देंगे (उदाहरण के लिए, समय श्रृंखला) नक्शे के बजाय।
  • "altitude" चर और "depth" चर के लिए:
    • उपयोगdestinationNameसमुद्र तल से ऊपर डेटा की दूरी की पहचान करने के लिए "altitude" (सकारात्मक) । वैकल्पिक रूप से, आप समुद्र तल से नीचे की दूरी के लिए "altitude" का उपयोग कर सकते हैं यदि मान समुद्र के नीचे नकारात्मक हैं (या यदि आप उपयोग करते हैं, तो उदाहरण के लिए, [<att namescale\_factor"type="int"> - 1</att> (#scale_factor) गहराई मान को ऊंचाई मान में परिवर्तित करने के लिए।
    • उपयोगdestinationName"गहराई" समुद्र तल से नीचे डेटा की दूरी की पहचान करने के लिए (सकारात्मक="down" मान) ।
    • डेटासेट में "altitude" और "depth" चर दोनों नहीं हो सकते हैं।
    • इन परिवर्तनीय नामों के लिए,यूनिट"m", "meter", या "meters" होना चाहिए। अगर इकाइयों अलग (उदाहरण के लिए, fathom) , आप उपयोग कर सकते हैं [<att namescale\_factor>> कुछ मूल्य </att> (#scale_factor) [<att name="units">meters</att> (#units) इकाइयों को मीटर में बदलने के लिए।
    • यदि आपका डेटा इन आवश्यकताओं को पूरा नहीं करता है, तो एक अलग का उपयोग करेंdestinationName (उदाहरण के लिए, ऊपर ToBottom) ।
    • यदि आप ऊर्ध्वाधर CRS जानते हैं तो कृपया इसे मेटाडाटा में निर्दिष्ट करें, उदाहरण के लिए, "EPSG:5829" (समुद्र तल से अधिक तात्कालिक ऊंचाई) , "EPSG:5831" (समुद्र तल के नीचे तात्कालिक गहराई) , या "EPSG:5703" (NAVD88 ऊंचाई) ।
  • के लिए"time"चर:
    • उपयोगdestinationName "time"केवल उन चरों के लिए जिनमें संपूर्ण तारीख + समय शामिल है (या तारीख, अगर यह सब है) । यदि, उदाहरण के लिए, तारीख और समय के लिए अलग-अलग कॉलम हैंOfday, चर नाम का उपयोग न करें"time"।
    • देखेंयूनिटसमय और समय के लिए इकाइयों की विशेषता के बारे में अधिक जानकारी के लिएStamp चर।
    • समय चर और संबंधितसमय मुद्रा परिवर्तकवे हमेशा स्रोत के समय स्वरूप से डेटा मान परिवर्तित कर रहे हैं कि अद्वितीय हैं (जो कुछ भी हो) एक संख्यात्मक मान में (1970-01-01T00:00:00Z) या स्ट्रिंग मान (आईएसओ 8601:2004 (E) स्वरूप) स्थिति के आधार पर।
    • जब कोई उपयोगकर्ता समय डेटा का अनुरोध करता है, तो वे उस समय को संख्यात्मक मान के रूप में निर्दिष्ट करके अनुरोध कर सकते हैं। (1970-01-01T00:00:00Z) या स्ट्रिंग मान (आईएसओ 8601:2004 (E) स्वरूप) ।
    • ERDDAP™इसमें उपयोगिता हैएक न्यूमेरिक कनवर्ट करें समय-समय पर स्ट्रिंग टाइम से
    • देखेंकैसेERDDAPसमय के साथ सौदे

क्यों सिर्फ दो बुनियादी डेटा संरचनाओं?

  • चूंकि मानव ग्राहकों और कंप्यूटर ग्राहकों के लिए संभावित डेटासेट संरचनाओं के एक जटिल सेट से निपटने के लिए मुश्किल है,ERDDAP™केवल दो बुनियादी डेटा संरचनाओं का उपयोग करता है:
  • निश्चित रूप से, इन संरचनाओं में सभी डेटा को व्यक्त नहीं किया जा सकता है, लेकिन इसमें से अधिकांश कर सकते हैं। टेबल्स, विशेष रूप से, बहुत लचीला डेटा संरचनाएं हैं (रिलेशनल डेटाबेस प्रोग्राम की सफलता को देखें) ।
  • यह डेटा क्वेरी को बनाना आसान बनाता है।
  • यह डेटा प्रतिक्रियाओं को एक सरल संरचना बनाता है, जो डेटा को विभिन्न प्रकार के मानक फ़ाइल प्रकारों में सेवा करना आसान बनाता है। (जो अक्सर साधारण डेटा संरचनाओं का समर्थन करते हैं) । यह मुख्य कारण है कि हम इसे स्थापित करते हैंERDDAP™इस तरह।
  • इसके बदले में यह हमारे लिए बहुत आसान बनाता है (या कोई) क्लाइंट सॉफ़्टवेयर लिखने के लिए जो सभी के साथ काम करता हैERDDAP™डेटासेट
  • यह विभिन्न स्रोतों से डेटा की तुलना करना आसान बनाता है।
  • हम बहुत जानते हैं कि यदि आप अन्य डेटा संरचनाओं में डेटा के साथ काम करने के लिए उपयोग किए जाते हैं तो आप शुरू में सोच सकते हैं कि यह दृष्टिकोण सरल या अपर्याप्त है। लेकिन सभी डेटा संरचनाओं में कारोबार होता है। कोई भी सही नहीं है। यहां तक कि do-it-all संरचनाओं में उनके डाउनसाइड भी हैं: उनके साथ काम करना जटिल है और फ़ाइलों को केवल विशेष सॉफ्टवेयर पुस्तकालयों के साथ लिखा या पढ़ा जा सकता है। यदि आप स्वीकार करते हैंERDDAPइसके साथ काम करने की कोशिश करने के लिए पर्याप्त दृष्टिकोण, आपको पता चल सकता है कि इसके फायदे हैं (विशेष रूप से एकाधिक फ़ाइल प्रकारों के लिए समर्थन जो डेटा प्रतिक्रियाओं को पकड़ सकता है) । The The most of theERDDAP™स्लाइड शो (विशेष रूप सेडेटा संरचना स्लाइड) इन मुद्दों के बारे में बहुत कुछ बात करता है।
  • और यहां तक कि अगर यह दृष्टिकोण आपको अजीब लगता है, तो भीERDDAP™ग्राहक कभी नोटिस नहीं करेंगे - वे बस देखेंगे कि सभी डेटासेट में एक अच्छा सरल संरचना है और वे आभारी होंगे कि वे विभिन्न प्रकार के फ़ाइल प्रारूपों में लौटे स्रोतों से डेटा प्राप्त कर सकते हैं।  

आयाम

  • क्या होगा यदि ग्रिड वैरिएबल्स इन सोर्स डाटासेट DON't share the अक्ष वैरिएबल?
    मेंEDDGridडेटासेट, सभी डेटा चर MUST उपयोग (शेयर) सभी अक्ष चर। यदि एक स्रोत डेटासेट में आयामों के एक सेट के साथ कुछ चर होते हैं, और आयामों के एक अलग सेट के साथ अन्य चर, तो आपको दो डेटासेट बनाने होंगे।ERDDAP। उदाहरण के लिए, आप एक बना सकते हैंERDDAP™डेटासेट जिसका शीर्षक "कुछ शीर्षक" है (सतह पर) वेरिएबल रखने के लिए जो सिर्फ इस्तेमाल करते हैं\[समय\]\[अक्षांश\]\[लंबाई\]आयाम और एक दूसरे को बनानेERDDAP™डेटासेट जिसका शीर्षक "कुछ शीर्षक" है (गहराई पर) " वेरिएबल्स को रखने के लिए जो उपयोग करते हैं\[समय\]\[ऊंचाई\]\[अक्षांश\]\[लंबाई\]। या शायद आप एक ही मान के साथ एक आयाम जोड़ने के लिए डेटा स्रोत को बदल सकते हैं (उदाहरण के लिए, ऊंचाई = 0) चर को सुसंगत बनाने के लिए।

ERDDAP™अधिक जटिल डेटासेट नहीं संभालती (उदाहरण के लिए, मॉडल जो त्रिभुज के जाल का उपयोग करते हैं) ठीक है। आप इन डेटासेटों में सेवा कर सकते हैंERDDAP™दो या अधिक डेटासेट बनाने के द्वाराERDDAP™ (ताकि प्रत्येक नए डेटासेट में सभी डेटा चर अक्ष चर का एक ही सेट साझा करें) लेकिन यह वह नहीं है जो उपयोगकर्ता चाहते हैं। कुछ डेटासेट के लिए, आप डेटासेट का नियमित ग्रिड संस्करण बना सकते हैं और मूल डेटा के अलावा यह पेशकश कर सकते हैं। कुछ ग्राहक सॉफ्टवेयर केवल एक नियमित ग्रिड के साथ सौदा कर सकते हैं, इसलिए ऐसा करके, आप अतिरिक्त ग्राहकों तक पहुंच सकते हैं।  

अनुमानित ग्रिड डेटा

कुछ ग्रिड डेटा में एक जटिल संरचना है। उदाहरण के लिए, उपग्रह स्तर 2 ("ऑंग ट्रैक") डेटा एक सरल प्रक्षेपण का उपयोग नहीं करता है। मॉडल (अन्य) अक्सर विभिन्न गैर-बेलनाकार अनुमानों पर ग्रिड डेटा के साथ काम करते हैं (उदाहरण के लिए, conic, ध्रुवीय स्टीरियोग्राफिक, tripolar) या असंरचना ग्रिड में (एक जटिल डेटा संरचना) । कुछ अंतिम उपयोगकर्ता चाहते हैं कि यह डेटा है, इसलिए सूचना का कोई नुकसान नहीं है। उन ग्राहकों के लिए,ERDDAP™डेटा की सेवा कर सकते हैं, जैसा कि है, केवल अगरERDDAP™प्रशासक मूल डेटासेट को कुछ डेटासेट में तोड़ देता है, जिसमें प्रत्येक भाग में चर शामिल होते हैं जो समान अक्ष चर को साझा करते हैं। हाँ, ऐसा लगता है कि शामिल लोगों के लिए अजीब लगता है और यह अधिकांश लोगों से अलग हैOPeNDAPसर्वर लेकिनERDDAP™कई प्रारूपों में उपलब्ध डेटा बनाने पर जोर देता है। यह संभव है क्योंकिERDDAP™अधिक समान डेटा संरचना का उपयोग/require करता है। हालांकि यह थोड़ा अजीब है (यानी, उम्मीद से अलग) ,ERDDAP™अनुमानित डेटा वितरित कर सकते हैं।

\[हाँ,ERDDAP™डेटा संरचना के लिए ढीले आवश्यकताएं हो सकती हैं, लेकिन आउटपुट प्रारूपों के लिए आवश्यकताएं रख सकती हैं। लेकिन इससे कई उपयोगकर्ताओं के बीच भ्रम पैदा हो सकता है, विशेष रूप से newbies, चूंकि विभिन्न संरचनाओं के साथ डेटा के लिए कई प्रतीत होता है वैध अनुरोध अमान्य होगा क्योंकि डेटा फ़ाइल प्रकार में फिट नहीं होगा। हम वर्तमान सिस्टम के डिजाइन में वापस आते रहते हैं।\]

कुछ अंतिम उपयोगकर्ता विभिन्न स्थितियों में आसानी से उपयोग के लिए इक्विरेक्टांगुलर / प्लेट कैरी या मर्केटर जैसे लैटलोन बेलनाकार प्रोजेक्शन में डेटा चाहते हैं। इन स्थितियों के लिए, हम प्रोत्साहित करते हैंERDDAP™व्यवस्थापक कुछ अन्य सॉफ्टवेयर का उपयोग करने के लिए (NCO?Matlab? आर? IDV? ...?) एक भौगोलिक पर डेटा को फिर से पेश करने के लिए (समीकरणीय प्रक्षेपण / प्लेट carrée) या अन्य बेलनाकार प्रक्षेपण और डेटा के उस रूप में काम करते हैंERDDAP™एक अलग डेटासेट के रूप में। यह वही है जो लोग उपग्रह स्तर 2 डेटा को स्तर 3 डेटा में परिवर्तित करते हैं। एक ऐसा उपकरण हैNCOजो रेगर्डिंग डेटा के लिए एक्सटेंशन विकल्प प्रदान करता है।

GIS and Reprojecting Data

चूंकि जीआईएस की दुनिया अक्सर उन्मुख होती है, जीआईएस कार्यक्रम आमतौर पर डेटा को फिर से पेश करने के लिए समर्थन प्रदान करते हैं, अर्थात्, एक अलग प्रक्षेपण के साथ एक मानचित्र पर डेटा साजिश।

वर्तमान में,ERDDAP™डेटा को सुधारने के लिए उपकरण नहीं है। इसके बजाय, हम अनुशंसा करते हैं कि आप डेटासेट का एक संस्करण बनाने के लिए एक बाहरी उपकरण का उपयोग करते हैं, जहां डेटा को अपने मूल रूप से आयताकार पर दोबारा लागू किया गया है। (अक्षांश देशांतर) के लिए उपयुक्त सरणीERDDAP।

हमारी राय में, CF/DAPदुनिया जीआईएस दुनिया की तुलना में थोड़ा अलग है और थोड़ा कम स्तर पर काम करता है।ERDDAP™इसे दर्शाता है। सामान्य तौर पर,ERDDAP™मुख्य रूप से डेटा के साथ काम करने के लिए डिज़ाइन किया गया है (नक्शा नहीं) और बदलना नहीं चाहता (उदाहरण के लिए, reproject) डेटा के लिएERDDAP™, ग्रिड डेटा अक्सर / आमतौर पर / संभवतः लैटलोन मूल्यों और एक बेलनाकार प्रक्षेपण के साथ जुड़ा हुआ है, न कि कुछ प्रक्षेपण के x, वाई मान। किसी भी मामले में,ERDDAP™डेटा के प्रक्षेपण के साथ कुछ भी नहीं करता है; यह सिर्फ डेटा के माध्यम से गुजरता है, जैसा कि इसके वर्तमान प्रक्षेपण के साथ है, सिद्धांत पर कि एक सुधार डेटा के लिए एक महत्वपूर्ण परिवर्तन है औरERDDAP™महत्वपूर्ण परिवर्तन के साथ शामिल नहीं होना चाहिए। इसके अलावा, बाद के उपयोगकर्ता फिर से डेटा को फिर से पेश कर सकते हैं, जो उतना अच्छा नहीं होगा जितना कि केवल एक पुनर्परियोजना करना। (तो, अगरERDDAP™व्यवस्थापक एक अलग प्रक्षेपण में डेटा की पेशकश करना चाहता है, ठीक है; केवल ऑफ़लाइन डेटा को फिर से पेश करें और यह पेशकश करें कि एक अलग डेटासेट के रूप मेंERDDAP। उपग्रह आधारित डेटासेट के बहुत सारे की पेशकश की जाती है क्योंकि NASA ने स्तर 2 को क्या कहा है? (झरना) और स्तर 3 (समीकरणीय प्रक्षेपण) संस्करण।) कबERDDAP™नक्शा (सीधेWMSया KML) ,ERDDAP™वर्तमान में केवल समतुल्य / प्लेट carrée प्रोजेक्शन के साथ मानचित्र बनाने की पेशकश करता है, जो कि सौभाग्य से मैपिंग कार्यक्रमों द्वारा स्वीकार किया जाता है।

हम प्रोत्साहित करते हैंERDDAP™व्यवस्थापक कुछ अन्य सॉफ्टवेयर का उपयोग करने के लिए (NCO?Matlab? आर? IDV? ...?) एक भौगोलिक पर डेटा को फिर से पेश करने के लिए (समीकरणीय प्रक्षेपण / प्लेट carrée) या अन्य बेलनाकार प्रक्षेपण और डेटा के उस रूप में काम करते हैंERDDAP™एक अलग डेटासेट के रूप में। यह वही है जो लोग उपग्रह स्तर 2 डेटा को स्तर 3 डेटा में परिवर्तित करते हैं। एक ऐसा उपकरण हैNCOजो रेगर्डिंग डेटा के लिए एक्सटेंशन विकल्प प्रदान करता है।

हमें आशा है किERDDAP™भविष्य में अन्य अनुमानों के साथ मानचित्र पेश करने के लिए अंतर्निहित उपकरण होंगे। हम भविष्य में जीआईएस दुनिया के लिए बेहतर संबंध रखने की उम्मीद करते हैं (वर्तमान के अलावाWMSसेवा) । यह भयानक है कि इस "आधुनिक" दुनिया में, CF / के बीच संबंधDAPदुनिया और जीआईएस दुनिया अभी भी इतनी कमजोर है। उन दोनों चीजों को टू डो लिस्ट में शामिल किया गया है। (यदि आप मदद करना चाहते हैं, तो विशेष रूप से कनेक्ट होने के साथERDDAP™To make a chris. जॉन at noaa.gov.)

डेटा प्रकार

ERDDAP™निम्नलिखित डेटा प्रकारों का समर्थन करता है (नाम केस संवेदनशील हैं;'u'उपसर्ग "unsigned" के लिए खड़ा है; अन्य प्रणालियों में कई नाम बिट की संख्या है) :

बाइट

  • बाइट -128 से 127 की एक श्रृंखला के साथ पूर्णांक मूल्यों पर हस्ताक्षर किए हैं। अन्य प्रणालियों में इसे कभी-कभी int8 कहा जाता है। इसे SQL और Cassandra द्वारा "tinyint" कहा जाता है। ERDDAP™बदलनाबोरानकुछ स्रोतों से (उदाहरण के लिए, SQL और Cassandra) में बाइट्सERDDAP™0=false, 1=true, and 127=missing\_value।

Ubyte

  • Ubyte 0 से 255 की एक श्रृंखला के साथ पूर्णांक मूल्यों को निर्दिष्ट नहीं किया गया है। अन्य प्रणालियों में इसे कभी-कभी Uint8 कहा जाता है।

छोटा

  • छोटा -32768 से 32767 तक की सीमा के साथ पूर्णांक मूल्यों पर हस्ताक्षर किए हैं। अन्य प्रणालियों में इसे कभी-कभी int16 कहा जाता है। इसे SQL और Cassandra द्वारा "smallint" कहा जाता है।

Ushort

  • Ushort 0 से 65535 की एक श्रृंखला के साथ पूर्णांक मूल्यों को निर्दिष्ट नहीं किया गया है। अन्य प्रणालियों में इसे कभी-कभी Uint16 कहा जाता है।

int

  • int -2147483648 से 2147483647 की एक श्रृंखला के साथ पूर्णांक मूल्यों पर हस्ताक्षर किए हैं। अन्य प्रणालियों में इसे कभी-कभी int32 कहा जाता है। इसे "integer" कहा जाता है|संख्यात्मक (?) "Cassandra" द्वारा SQL और "int" द्वारा।

हिंदी

  • हिंदी 0 से 4294967295 की एक श्रृंखला के साथ पूर्णांक मूल्यों को निर्दिष्ट नहीं किया गया है। अन्य प्रणालियों में इसे कभी-कभी Uint32 कहा जाता है।

लंबा

  • लंबा -9223372036854775808 से 9223372036854775807 की एक श्रृंखला के साथ पूर्णांक मूल्यों पर हस्ताक्षर किए हैं। अन्य प्रणालियों में इसे कभी-कभी int64 कहा जाता है। इसे "बिगिंट" कहा जाता है|संख्यात्मक (?) एसक्यूएल और "बिगिंट" द्वारा Cassandra। क्योंकि कई फ़ाइल प्रकार लंबे डेटा का समर्थन नहीं करते हैं, उनका उपयोग हतोत्साहित है। जब संभव हो, तो इसके बजाय डबल का उपयोग करें (नीचे देखें) ।

ऊँचा

  • ऊँचा 0 से 18446744073709551615 की एक श्रृंखला के साथ unsigned पूर्णांक मान है अन्य प्रणालियों में इसे कभी-कभी Uint64 कहा जाता है। क्योंकि कई फ़ाइल प्रकार उल्लू डेटा का समर्थन नहीं करते हैं, उनका उपयोग हतोत्साहित है। जब संभव हो, तो इसके बजाय डबल का उपयोग करें (नीचे देखें) ।

फ्लोट

  • फ्लोट लगभग +/- 3.402823466e + 38 की एक श्रृंखला के साथ एक IEEE 754 फ्लोट है। अन्य प्रणालियों में इसे कभी-कभी फ्लोट32 कहा जाता है। इसे "real" कहा जाता है|फ्लोट (?) |दशमलव (?) |संख्यात्मक (?) "Cassandra द्वारा SQL और "float" द्वारा। विशेष मूल्य नान का अर्थ नो-ए-नंबर है। ERDDAP™सकारात्मक और नकारात्मक इन्फिनिटी मूल्यों को NaN में बदल देता है।

डबल

  • डबल लगभग की एक श्रृंखला के साथ एक IEEE 754 डबल है +/- 1.7976931348623157E+308. अन्य प्रणालियों में इसे कभी-कभी फ्लोट64 कहा जाता है। इसे "डबल परिशुद्धता" कहा जाता है|फ्लोट (?) |दशमलव (?) |संख्यात्मक (?) एसक्यूएल और "डबल" द्वारा Cassandra। विशेष मूल्य नान का अर्थ नो-ए-नंबर है। ERDDAP™सकारात्मक और नकारात्मक इन्फिनिटी मूल्यों को NaN में बदल देता है।

char

  • char एक एकल, 2-बाइट है (16-bit) यूनिकोड UCS-2से लेकर\u0000 (#0) माध्यम\uffff (#65535) । \uffff'की परिभाषा नॉट-a-Character है, जो नान के दोहरे मान के अनुरूप है। char का उपयोग हतोत्साहित है क्योंकि कई फ़ाइल प्रकार या तो chars का समर्थन नहीं करते हैं या केवल 1-byte chars समर्थन करते हैं। (नीचे देखें) । इसके बजाय स्ट्रिंग का उपयोग करने पर विचार करें। उपयोगकर्ता ग्राफ़ बनाने के लिए चार चर का उपयोग कर सकते हैं।ERDDAP™वर्णों को उनके यूनिकोड कोड बिंदु संख्या में परिवर्तित करेगा, जिसका उपयोग संख्यात्मक डेटा के रूप में किया जा सकता है।

स्ट्रिंग

  • स्ट्रिंग 0 या उससे अधिक का अनुक्रम है, 2-byte (16-bit) यूनिकोड UCS-2 वर्ण। ERDDAP™एक लापता मूल्य के रूप में 0-लंबाई स्ट्रिंग का उपयोग / व्याख्या करता है।ERDDAP™एक वास्तविक शून्य स्ट्रिंग का समर्थन नहीं करता है। सैद्धांतिक अधिकतम स्ट्रिंग लंबाई 2147483647 वर्ण है, लेकिन शायद कुछ हद तक कम स्ट्रिंग के साथ भी विभिन्न स्थानों में विभिन्न समस्याएं हैं। उपयोगERDDAPSQL के चरित्र, varchar, चरित्र भिन्नता, द्विआधारी, varbinary, अंतराल, सरणी, मल्टीसेट, xml, और किसी अन्य डेटाबेस डेटा प्रकार के लिए स्ट्रिंग जो किसी अन्य के साथ स्वच्छ रूप से फिट नहीं हैERDDAP™डेटा प्रकार। उपयोगERDDAPCassandra के "text" और किसी अन्य Cassandra डेटा प्रकार के लिए स्ट्रिंग जो स्वच्छ रूप से किसी अन्य के साथ फिट नहीं हैERDDAP™डेटा प्रकार।  

पहलेERDDAP™v2.10,ERDDAP™आंतरिक रूप से unsigned पूर्णांक प्रकारों का समर्थन नहीं किया और अपने डेटा पाठकों और लेखकों में सीमित समर्थन की पेशकश की।

डेटा टाइप लिमिटेशन

आप सोच सकते हैंERDDAP™एक प्रणाली के रूप में जिसमें आभासी डेटासेट होते हैं, और जो डेटासेट के स्रोत से एक आंतरिक डेटा मॉडल में डेटा पढ़ने और विभिन्न सेवाओं के लिए डेटा लिखने के द्वारा काम करता है (उदाहरण के लिए,)(OPeN)DAP,WMSउपयोगकर्ता अनुरोधों के जवाब में फ़ाइल प्रकार।

  • प्रत्येक इनपुट रीडर डेटा प्रकारों की एक सबसेट का समर्थन करता है जो डेटा प्रकारों की एक सबसेट का समर्थन करता है।ERDDAP™समर्थन तो डेटा पढ़ने मेंERDDAPआंतरिक डेटा संरचना एक समस्या नहीं है।
  • प्रत्येक आउटपुट लेखक डेटा प्रकारों की एक सबसेट का भी समर्थन करता है। यह एक समस्या है क्योंकिERDDAPउदाहरण के लिए, फाइल प्रकारों में लंबे डेटा जो लंबे डेटा का समर्थन नहीं करते हैं।  

नीचे सीमाओं के स्पष्टीकरण हैं (कोई नहीं) विभिन्न उत्पादन लेखकों और कैसेERDDAP™समस्याओं से निपटने के लिए। ऐसी जटिलताओं का एक अंतर्निहित हिस्सा हैERDDAPअविभाज्य सिस्टम बनाने का लक्ष्य।

ASCII

  • ASCII (Csv,.tsvआदि) टेक्स्ट फाइलें -
    • सभी संख्यात्मक डेटा अपने स्ट्रिंग प्रतिनिधित्व के माध्यम से लिखा जाता है (0-लंबाई स्ट्रिंग्स के रूप में दिखाई देने वाले लापता डेटा मानों के साथ) ।

    • हालांकिERDDAP™ASCII पाठ फ़ाइलों के लिए सही ढंग से लंबे और लंबे मूल्यों को लिखते हैं, कई पाठक (उदाहरण के लिए, स्प्रेडशीट कार्यक्रम) लंबे और लंबे मूल्यों के साथ सही ढंग से सौदा नहीं कर सकता है और इसके बजाय उन्हें दोहरे मूल्यों में परिवर्तित कर सकता है (कुछ मामलों में परिशुद्धता के नुकसान के साथ) ।

    • चार और स्ट्रिंग डेटा JSON स्ट्रिंग्स के माध्यम से लिखे गए हैं, जो सभी यूनिकोड वर्णों को संभालते हैं (विशेष रूप से, ASCII #127 से परे "असामान्य" वर्ण, उदाहरण के लिए, यूरो चरित्र "\u20ac" के रूप में दिखाई देता है।) ।

JSON

  • JSON (.json,.jsonlCSVआदि) टेक्स्ट फाइलें -
    • सभी संख्यात्मक डेटा अपने स्ट्रिंग प्रतिनिधित्व के माध्यम से लिखा जाता है।
    • चार और स्ट्रिंग डेटा JSON स्ट्रिंग के रूप में लिखा जाता है, जो सभी यूनिकोड वर्णों को संभालती है (विशेष रूप से, ASCII #127 से परे "असामान्य" वर्ण, उदाहरण के लिए, यूरो चरित्र "\u20ac" के रूप में दिखाई देता है।) ।
    • सभी संख्यात्मक डेटा प्रकारों के लिए मिसिंग मान शून्य के रूप में दिखाई देते हैं।  

.nc3 फाइलें

  • .nc3 फाइलें मूल रूप से किसी भी निर्दिष्ट पूर्णांक डेटा प्रकार का समर्थन नहीं करती हैं। CF v1.9 से पहले, CF ने असाइन किए गए पूर्णांक प्रकारों का समर्थन नहीं किया। इससे निपटने के लिए,ERDDAP™2.10+ NUG मानक का अनुसरण करता है और हमेशा "true" या "false" के मूल्य के साथ एक "\_Unsigned" विशेषता जोड़ती है, यह इंगित करने के लिए कि डेटा एक unsigned या हस्ताक्षरित चर से है। सभी पूर्णांक विशेषताओं को हस्ताक्षरित विशेषताओं के रूप में लिखा जाता है (उदाहरण के लिए, byte) हस्ताक्षरित मान (उदाहरण के लिए, एक ubyte) के साथactual\_rangeमान 0 से 255 के साथ विशेषता, मान 0 से -1 के साथ एक बाइट विशेषता के रूप में प्रकट होती है (बाहरी रेंज मान के दो के पूरक मूल्य के विपरीत)। यह जानने का कोई आसान तरीका नहीं है कि कौन सा (signed) पूर्णांक विशेषताओं को असाइन किए गए विशेषताओं के रूप में पढ़ा जाना चाहिए।ERDDAP™जब यह पढ़ता है तो "\_Unsigned" विशेषता का समर्थन करता है.nc3 फाइलें।
  • .nc3 फाइलें लंबे या लंबे डेटा प्रकारों का समर्थन नहीं करती हैं।ERDDAP™इससे निपटने के लिए अस्थायी रूप से उन्हें डबल वेरिएबल में परिवर्तित करने के लिए। डबल्स बिल्कुल +/- 9,007,199,254,740,992 तक सभी मूल्यों का प्रतिनिधित्व कर सकते हैं जो 2^53 है। यह एक अपूर्ण समाधान है।Unidataमामूली उन्नयन करने से इनकार कर दिया.ncइस समस्या से निपटने के लिए 3, सिटिंग.nc4 (एक प्रमुख बदलाव) समाधान के रूप में।
  • CF विनिर्देश (इससे पहले v1.9) यह एक char डेटा प्रकार का समर्थन करता है, लेकिन यह स्पष्ट नहीं है कि अगर char केवल char सरणी के निर्माण ब्लॉक के रूप में ही इरादा है, जो प्रभावी रूप से स्ट्रिंग्स हैं। उनकी मेलिंग सूची में सवाल केवल जवाब देने के लिए पैदा हुआ। इन जटिलताओं के कारण, इसमें चार चरों से बचने के लिए सबसे अच्छा हैERDDAP™और जब भी संभव हो स्ट्रिंग चर का उपयोग करें।
  • पारंपरिक रूप से.nc3 फाइलें केवल ASCII-encoded के साथ समर्थित तार (7-बिट, #0 - #127) वर्ण। एनयूजी (औरERDDAP) कि विस्तार (शुरू ~2017) "ISO-8859-1" के मूल्य के साथ विशेषता "\_Encoding" सहित (ASCII का विस्तार जो प्रत्येक 8-बिट चरित्र के सभी 256 मूल्यों को परिभाषित करता है) या "UTF-8" यह इंगित करने के लिए कि स्ट्रिंग डेटा को कैसे एन्कोड किया गया है। अन्य एन्कोडिंग कानूनी हो सकते हैं लेकिन इन्हें हतोत्साहित किया जा सकता है।  

.nc4 फाइलें

  • .nc4 फाइलें सभी का समर्थन करती हैंERDDAPडेटा प्रकार।

NCCSV

NCCSV 1.0 फाइलें किसी भी निर्दिष्ट पूर्णांक डेटा प्रकार का समर्थन नहीं करती हैं। NCCSV 1.1+ फाइलेंसभी निर्दिष्ट पूर्णांक डेटा प्रकारों का समर्थन करते हैं।  

DAP

  • (OPeN)DAP (.das, .dds, .asc ASCII फ़ाइलें, और .dods द्विआधारी फ़ाइलें) -
    • (OPeN)DAPशॉर्ट, ushort, int, uint, फ्लोट और डबल मूल्यों को सही ढंग से संभालती है।
    • (OPeN)DAPएक "बाइट" डेटा प्रकार है कि यह असाइन किया गया है, जबकि ऐतिहासिक रूप से, THREDDS औरERDDAP™उनके द्वारा हस्ताक्षरित "बाइट" का इलाज किया गया है(OPeN)DAPसेवाएं इससे बेहतर निपटने के लिए,ERDDAP™2.10+ NUG मानक का अनुसरण करता है और हमेशा डेटा क्या है, यह इंगित करने के लिए "true" या "false" के मूल्य के साथ एक "\_Unsigned" विशेषता जोड़ता है।ERDDAP™byte or ubyte. सभी बाइट और यूबाइट विशेषताओं को हस्ताक्षरित मूल्यों (जैसे, एक ubyte) के साथ "बाइट" विशेषताओं के रूप में लिखा जाता है।actual\_rangeमान 0 से 255 के साथ विशेषता, मान 0 से -1 के साथ एक बाइट विशेषता के रूप में प्रकट होती है (बाहरी रेंज मान के दो के पूरक मूल्य के विपरीत)। यह जानने का कोई आसान तरीका नहीं है कि "बाइट" विशेषताओं को यूबाइट विशेषताओं के रूप में पढ़ा जाना चाहिए।
    • (OPeN)DAPहस्ताक्षरित या असाइन किए गए लंबे समय का समर्थन नहीं करता है।ERDDAP™इससे निपटने के लिए अस्थायी रूप से उन्हें डबल वेरिएबल और विशेषताओं में परिवर्तित करने के लिए। डबल्स बिल्कुल 9,007,199,254,740,992 तक सभी मूल्यों का प्रतिनिधित्व कर सकते हैं जो 2^53 है। यह एक अपूर्ण समाधान है।OPeNDAP (संगठन) मामूली उन्नयन करने से इनकार कर दियाDAP2.0 इस और संबंधित समस्याओं से निपटने के लिए, उद्धृत करनाDAP4 (एक प्रमुख बदलाव) समाधान के रूप में।
    • क्योंकि(OPeN)DAPतकनीकी रूप से केवल 1-byte ASCII वर्णों का समर्थन नहीं करता है (#0 - #127) स्ट्रिंग्स में चार डेटा चर 1-character-long स्ट्रिंग्स के रूप में दिखाई देंगे(OPeN)DAP.das, .dds, और .dods प्रतिक्रियाओं।
    • तकनीकी रूप से,(OPeN)DAPविनिर्देश केवल ASCII-encoded वर्णों के साथ तारों का समर्थन करता है (#0 - #127) । एनयूजी (औरERDDAP) कि विस्तार (शुरू ~2017) "ISO-8859-1" के मूल्य के साथ विशेषता "\_Encoding" सहित (ASCII का विस्तार जो प्रत्येक 8-बिट चरित्र के सभी 256 मूल्यों को परिभाषित करता है) या "UTF-8" यह इंगित करने के लिए कि स्ट्रिंग डेटा को कैसे एन्कोड किया गया है। अन्य एन्कोडिंग कानूनी हो सकते हैं लेकिन इन्हें हतोत्साहित किया जा सकता है।  

डेटा प्रकार टिप्पणियाँ

  • कई फ़ाइल प्रकारों में लंबे, ulong और char डेटा के लिए खराब समर्थन के कारण, हम इन डेटा प्रकारों के उपयोग को हतोत्साहित करते हैंERDDAP। जब संभव हो, तो लंबे और लंबे समय तक डबल का उपयोग करें और चार के बजाय स्ट्रिंग का उपयोग करें।  
  • मेटाडाटा - क्योंकि(OPeN)DAP'.das and .dds प्रतिक्रियाओं लंबे या ulong विशेषताओं या डेटा प्रकारों का समर्थन नहीं करते हैं (इसके बजाय उन्हें डबल्स के रूप में दिखाते हैं) , आप इसके बजाय उपयोग करना चाहते हैंERDDAPमेटाडाटा के सारणीबद्ध प्रतिनिधित्व के रूप में देखा गयाhttp.../erddap/ जानकारी / datasetID Web page (उदाहरण के लिए, https://coastwatch.pfeg.noaa.gov/erddap/info/cwwcNDBCMet/index.html ) (जो आप अन्य फ़ाइल प्रकारों में भी प्राप्त कर सकते हैं, उदाहरण के लिए, .csv,.htmlTable,.itx,.json,.jsonlCSV1,.jsonlCSV,.jsonlKVP,.mat,.nc,.nccsv,.tsv,.xhtml) या.nccsvमेटाडाटा प्रतिक्रिया (उदाहरण के लिए, https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.nccsvMetadata हालांकि.nccsvमेटाडाटा केवल सारणीबद्ध डेटासेट के लिए उपलब्ध है) दोनों डेटा प्रकारों का समर्थन करते हैं (विशेष रूप से, लंबे, लंबे समय तक, और char) ।  

मीडिया फ़ाइलें

सभी डेटा संख्याओं या पाठ के सरणी नहीं हैं। कुछ डेटासेट में मीडिया फ़ाइलों जैसे छवि, ऑडियो और वीडियो फ़ाइलों को शामिल या शामिल किया गया है।ERDDAP™उपयोगकर्ताओं के लिए मीडिया फ़ाइलों तक पहुंच प्राप्त करना आसान बनाने के लिए कुछ विशेष सुविधाएँ हैं। यह दो चरण प्रक्रिया है:  

  1. प्रत्येक फ़ाइल को अपने स्वयं के URL के माध्यम से सुलभ बनाएं, एक प्रणाली के माध्यम से जो बाइट रेंज अनुरोधों का समर्थन करता है। ऐसा करने का सबसे आसान तरीका यह है कि फ़ाइलों को एक निर्देशिका में डाल दिया जाएERDDAP™पहुँच है। (अगर वे एक कंटेनर में हैं, तो एक कंटेनर की तरह.zipफ़ाइल, उन्हें खोलना, हालांकि आप पेशकश करना चाहते हैं.zipउपयोगकर्ताओं के लिए भी फाइल करें।) फिर, बनानाEDDTableFromFileNamesउन फ़ाइलों को सुलभ बनाने के लिए डेटासेटERDDAP™विशेष रूप सेERDDAP'"files"प्रणाली

EDDTableFromFileNames के माध्यम से सुलभ सभी फाइलें औरERDDAP'"files"सिस्टम समर्थनbyte रेंज अनुरोध। आम तौर पर, जब एक ग्राहक (उदाहरण के लिए, एक ब्राउज़र) यूआरएल को अनुरोध करता है, यह पूरी फ़ाइल को प्रतिक्रिया के रूप में प्राप्त करता है। लेकिन एक बाइट रेंज अनुरोध के साथ, अनुरोध फ़ाइल से बाइट्स की एक श्रृंखला को निर्दिष्ट करता है, और सर्वर केवल उन बाइट्स को लौटाता है। यह यहां प्रासंगिक है क्योंकि ब्राउज़रों में ऑडियो और वीडियो प्लेयर केवल तभी काम करते हैं जब फ़ाइल को बाइट रेंज अनुरोधों के माध्यम से एक्सेस किया जा सकता है।

वैकल्पिक: यदि आपके पास संबद्ध मीडिया फ़ाइलों के साथ एक से अधिक डेटासेट है, तो आप केवल एक EDDTableFromFileNames बना सकते हैं, जिसमें फ़ाइलों के प्रत्येक समूह के लिए एक सबफ़ोल्डर है। लाभ यह है कि जब आप एक नए डेटासेट के लिए नई मीडिया फ़ाइलों को जोड़ना चाहते हैं, तो आपको बस एक नया फ़ोल्डर बनाना होगा और उस फ़ोल्डर में फ़ाइलों को डाल देना होगा। फ़ोल्डर और फ़ाइलों को स्वचालित रूप से EDDTableFromFileNames डेटासेट में जोड़ा जाएगा।

  1. वैकल्पिक: यदि आपके पास एक डेटासेट है जिसमें मीडिया फ़ाइलों के संदर्भ शामिल हैं, तो इसे इसमें जोड़ेंERDDAP। उदाहरण के लिए, आपके पास प्रत्येक बार किसी ने व्हेल और एक कॉलम देखा, जिसमें उस दृष्टि से संबंधित एक छवि फ़ाइल का नाम शामिल है, एक पंक्ति के साथ एक .csv फ़ाइल हो सकती है। यदि छवि फ़ाइल का नाम सिर्फ फ़ाइल नाम है, उदाहरण के लिए, Img20141024T192403Z, एक पूर्ण यूआरएल नहीं है, तो आपको जोड़ने की आवश्यकता हैफ़ाइल AccessBase Url and/or fileAccessSuffixइसके लिए मेटाडाटा की विशेषताdataVariableजो उन फाईलनामों के लिए baseURL और suffix निर्दिष्ट करता है। यदि आपने EDDTableFromFileNames के माध्यम से सुलभ फ़ाइलों को बनाया है, तो URL फॉर्म में होगा। बेस /erddap/files/ datasetID / उदाहरण के लिए,
        <att name="fileAccessBaseUrl">*someBaseURL*</a>  
<att name="fileAccessSuffix">.png</a>

अगर वहाँ है.zipया किसी अन्य कंटेनर फ़ाइल के साथ सभी मीडिया फ़ाइलों से संबंधित डेटा चर, हम अनुशंसा करते हैं कि आप उस फ़ाइल को उपयोगकर्ताओं के लिए सुलभ बना सकें (ऊपर देखें) और फिर इसे एक साथ पहचानेंफ़ाइल Urlविशेषता।

\[शुरूERDDAP™v1.82\]यदि आप ऊपर पहला कदम रखते हैं (दोनों चरणों) तब जब कोई उपयोगकर्ता विचार करता हैERDDAP™ "files"उस डेटासेट के लिए सिस्टम (या एक के माध्यम से डेटासेट की एक सबसेट देखने के लिए पूछता है.htmlTableयदि आप दूसरे चरण में थे तो अनुरोध करें) ,ERDDAP™फ़ाइल नाम के बाईं ओर एक '?' आइकन दिखाई देगा। यदि उपयोगकर्ता उस आइकन पर होवर्स करता है, तो वे एक पॉपअप छवि, या एक ऑडियो प्लेयर, या एक वीडियो प्लेयर दिखा देंगे। ब्राउज़र केवल सीमित संख्या में प्रकारों का समर्थन करते हैं

  • छवि (आमतौर पर .gif, .jpg, और .png) ,
  • ऑडियो (आमतौर पर .mp3, .ogg, और .wav) , और
  • वीडियो फ़ाइलों (आमतौर पर .mp4, .ogv, और .mp4। वेब) ।

समर्थन विभिन्न ऑपरेटिंग सिस्टम पर विभिन्न ब्राउज़रों के विभिन्न संस्करणों के साथ भिन्न होता है। इसलिए यदि आपके पास एक विकल्प है जिसमें फ़ाइल प्रकार की पेशकश की जाती है, तो यह इन प्रकार की पेशकश करने के लिए समझ में आता है।

यदि कोई उपयोगकर्ता फ़ाइल नाम पर क्लिक करता है तो एक पर दिखाया गया हैERDDAP™वेब पेज, उनके ब्राउज़र को एक अलग वेब पेज के रूप में छवि, ऑडियो या वीडियो फ़ाइल दिखाई देगा। यह एक बहुत बड़ी छवि या वीडियो को पूरी स्क्रीन पर स्केल करने के लिए उपयोगी है, बजाय एक पॉपअप में।

AWS S3 Files के साथ काम करना

अमेज़न वेब सेवा (एडब्ल्यूएस) एक विक्रेता हैक्लाउड कंप्यूटिंगसेवाएंS3AWS द्वारा प्रस्तावित एक ऑब्जेक्ट स्टोरेज सिस्टम है। एक पारंपरिक फ़ाइल सिस्टम की निर्देशिकाओं और फ़ाइलों की पदानुक्रम प्रणाली के बजाय (अपने पीसी में हार्ड ड्राइव की तरह) , S3 सिर्फ "buckets" प्रदान करता है जो "objects" पकड़ता है (हम उन्हें कॉल करेंगे"files") ।

ASCII फ़ाइलों के लिए (उदाहरण के लिए, csv) ,ERDDAP™सीधे बाल्टी में फ़ाइलों के साथ काम कर सकते हैं। केवल वही चीज जो आपको करना है उसे निर्दिष्ट करें<AWS बाल्टी के लिए एक विशिष्ट प्रारूप का उपयोग करके डेटासेट के लिए फ़ाइलDir>, उदाहरण के लिए, https://bucketName.s3.aws-region.amazonaws.com/subdirectory/ । आपको उपयोग नहीं करना चाहिए<CashFromUrl>। विवरण के लिए नीचे देखें।

लेकिन द्विआधारी फ़ाइलों के लिए (उदाहरण के लिए.nc, .grib, .bufr, और.hdfफ़ाइलें) , आपको उपयोग करने की आवश्यकता है<CashFromUrl> प्रणाली नीचे वर्णित है।ERDDAP, netcdfjava (जोERDDAP™इन फ़ाइलों से डेटा पढ़ने के लिए उपयोग करता है) , और अन्य वैज्ञानिक डेटा सॉफ्टवेयर को पारंपरिक फ़ाइल सिस्टम में फ़ाइलों के साथ काम करने के लिए डिज़ाइन किया गया है जो प्रदान करता हैब्लॉक स्तरफ़ाइलों तक पहुंच (जो किसी फ़ाइल के पढ़ने वाले हिस्से की अनुमति देता है) लेकिन केवल S3 प्रदान करता हैफाइल का स्तर (वस्तु) फ़ाइलों तक पहुंच (जो केवल संपूर्ण फ़ाइल पढ़ने की अनुमति देता है) । AWS S3 का विकल्प प्रदान करता है,लोचदार ब्लॉक स्टोर (EBS) ), जो फ़ाइलों के लिए ब्लॉक स्तर की पहुंच का समर्थन करता है लेकिन यह S3 की तुलना में अधिक महंगा है, इसलिए इसका उपयोग शायद ही कभी बड़ी मात्रा में डेटा फ़ाइलों के थोक भंडारण के लिए किया जाता है। (इसलिए जब लोग क्लाउड में डेटा संग्रहीत करते हैं (S3) यह आमतौर पर नारंगी तुलना के लिए एक सेब है।)

S3 बाल्टी

एक बाल्टी की सामग्री। कुंजी ऑब्जेक्ट्स। Delimiters।
तकनीकी रूप से, कंप्यूटर पर एक फ़ाइल सिस्टम की तरह एक पदानुक्रमिक फ़ाइल संरचना में S3 बाल्टी का आयोजन नहीं किया जाता है। इसके बजाय, बाल्टी में केवल "objects" होते हैं। (फ़ाइलें) जिनमें से प्रत्येक में "की" है (नाम) । उस noaa-goes17 बाल्टी में एक कुंजी का उदाहरण है

ABI-L1b-RadC/2019/235/22/OR\\_ABI-L1b-RadC-M6C01\\_G17\\_s20192352201196\\_e20192352203569\\_c20192352204013.nc

उस वस्तु के लिए संबंधित यूआरएल है

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

AWS उस URL का निर्माण करने के तरीके में थोड़ा भिन्नता का समर्थन करता है, लेकिनERDDAP™इस एक विशिष्ट प्रारूप की आवश्यकता है:    https://bucketName.s3.region.amazonaws.com/key
यह सामान्य अभ्यास है, जैसा कि इस उदाहरण के साथ, कुंजी नाम बनाने के लिए एक पदानुक्रमिक पथ के साथ-साथ एक फ़ाइल नाम की तरह दिखता है, लेकिन तकनीकी रूप से वे नहीं हैं। चूंकि यह आम और उपयोगी है,ERDDAP™यदि वे एक पदानुक्रमिक पथ प्लस फ़ाइल नाम हैं तो /'s साथ कुंजी का व्यवहार करता है, और यह दस्तावेज़ उन्हें इस तरह के रूप में संदर्भित करेगा। यदि एक बाल्टी की चाबियाँ उपयोग नहीं करती हैं /'s (उदाहरण के लिए, एक कुंजी की तरह ABI-Lib.2018.052.22.OR\_ABI-L1b-RadM2-M3C10\_G16\_s20180522247575), फिरERDDAP™सिर्फ एक लंबे फाइल नाम के रूप में पूरी कुंजी का इलाज करेंगे।

निजी बनाम सार्वजनिक बाल्टी -- S3 बाल्टी के लिए प्रशासक बाल्टी और इसकी सामग्री को सार्वजनिक या निजी बना सकता है। यदि सार्वजनिक हो, तो बाल्टी में कोई भी फ़ाइल फाइल के लिए यूआरएल का उपयोग करके किसी को डाउनलोड किया जा सकता है। अमेज़न एक हैओपन डेटाप्रोग्राम जो सार्वजनिक डेटासेट की मेजबानी करता है (डेटा सहितNOAAनासा, और USGS) मुक्त करने के लिए और उन बाल्टी से फ़ाइलों को डाउनलोड करने के लिए किसी के लिए चार्ज नहीं करता है। यदि एक बाल्टी निजी है, तो बाल्टी में फाइलें केवल अधिकृत उपयोगकर्ताओं के लिए सुलभ हैं और AWS शुल्क लेता है (अक्सर बाल्टी के मालिक द्वारा भुगतान किया जाता है) फ़ाइलों को गैर-AWS S3 कंप्यूटर पर डाउनलोड करने के लिए।ERDDAP™सार्वजनिक और निजी बाल्टी में डेटा के साथ काम कर सकते हैं।

AWS Credentials

ऐसा करने के लिएERDDAP™निजी बाल्टी की सामग्री को पढ़ सकते हैं, आपको एडब्ल्यूएस क्रेडेंशियल की आवश्यकता होती है और आपको मानक स्थान पर एक क्रेडेंशियल फ़ाइल स्टोर करने की आवश्यकता होती है।ERDDAP™जानकारी प्राप्त कर सकते हैं। के लिए AWS SDK देखेंJava2.x प्रलेखन:डिफ़ॉल्ट क्रेडेंशियल सेट। (मानों को स्टोर करने का विकल्पJavaमें कमांड लाइन पैरामीटर\[tomcat\]/bin/setenv.sh एक अच्छा विकल्प हो सकता है।)

AWS/files/

  • / फ़ाइल / सिस्टम -- The The most of theERDDAP™ / फ़ाइल / प्रणालीउपयोगकर्ताओं को डेटासेट के लिए स्रोत फ़ाइलों को डाउनलोड करने की अनुमति देता है। हम अनुशंसा करते हैं कि आप इसे स्रोत फ़ाइलों के साथ सभी डेटासेट के लिए बदल दें क्योंकि कई उपयोगकर्ता मूल स्रोत फ़ाइलों को डाउनलोड करना चाहते हैं।
    • यदि फाइलें एक निजी S3 बाल्टी में हैं, तो उपयोगकर्ता के अनुरोध को डाउनलोड करने के लिए एक फ़ाइल द्वारा नियंत्रित किया जाएगाERDDAP™, जो डेटा को फ़ाइल से पढ़ेगा और फिर इसे उपयोगकर्ता को प्रेषित करेगा, इस प्रकार लोड को आपके पास बढ़ा देगाERDDAP™, आने वाले और आउटगोइंग बैंडविड्थ का उपयोग करके, और आपको बनाना (The number of theERDDAP™व्यवस्थापक) AWS को डेटा egress शुल्क का भुगतान करें।
    • यदि फाइलें सार्वजनिक S3 बाल्टी में हैं, तो उपयोगकर्ता के अनुरोध को डाउनलोड करने के लिए फ़ाइल को उस फाइल के लिए AWS S3 URL पर रीडायरेक्ट किया जाएगा, इसलिए डेटा प्रवाहित नहीं होगा।ERDDAP™इस प्रकार लोड को कम करनाERDDAP। और अगर फाइलें अमेज़न ओपन डेटा में हैं (मुक्त) सार्वजनिक बाल्टी, फिर आप (The number of theERDDAP™व्यवस्थापक) AWS के लिए किसी भी डेटा egress शुल्क का भुगतान नहीं करना होगा। इस प्रकार, सार्वजनिक से डेटा की सेवा करने वाला एक बड़ा लाभ है (निजी नहीं) S3 बाल्टी और अमेज़न ओपन डेटा से डेटा की सेवा के लिए एक बड़ा लाभ (मुक्त) बाल्टी।

ERDDAP™AWS S3 बाल्टी

ERDDAP™AWS S3 बाल्टी
सौभाग्य से, बहुत प्रयास के बाद,ERDDAP™इसमें कई विशेषताएं हैं जो इसे S3 के ब्लॉक लेवल एक्सेस के साथ काम करने की अंतर्निहित समस्याओं से निपटने की अनुमति देती हैं।

  • \[अस्वीकरण: AWS S3 बाल्टी के साथ काम करना अतिरिक्त काम का एक बहुत है। AWS सेवाओं और सुविधाओं का एक विशाल पारिस्थितिकी तंत्र है। सीखने के लिए बहुत कुछ है। यह समय और प्रयास लेता है, लेकिन यह संभव है। रोगी बनें और आपको काम करने के लिए चीजें मिल जाएंगी। मदद के लिए देखो / ask (a)AWS प्रलेखन, जैसे वेबसाइटस्टैक ओवरफ्लोनियमित ERDDAP™समर्थन विकल्पयदि आप अटक जाते हैं तो?\]
     
  • यह भी एक S3 बाल्टी में फ़ाइलों के निर्देशिका संरचना और फ़ाइल नाम पता करने के लिए मुश्किल हो सकता है।ERDDAP™इस समस्या का समाधान है: EDDTableFromFileNames एक विशेष समाधान है\*\** FromOnTheFlyविकल्प जो आपको EDDTableFromFileNames Dataset बनाने देता है जो उपयोगकर्ताओं को S3 बाल्टी की सामग्री ब्राउज़ करने की अनुमति देता है। (फ़ाइल डाउनलोड करें) डेटासेट के माध्यम से"files"विकल्प वहाँ एक हैनीचे दिए गए उदाहरण।  
  • ERDDAP™से डेटा पढ़ सकते हैंबाह्य रूप से संकुचित डेटा फ़ाइलोंयदि S3 पर फ़ाइलों को संग्रहीत किया जाता है तो यह ठीक है।.gz,.gzip,.bz2बाहरी रूप से संपीड़ित डेटा फ़ाइलों के अन्य प्रकार जो नाटकीय रूप से हो सकते हैं (2 - 20X) फ़ाइल भंडारण लागत पर कटौती। बाह्य रूप से संपीड़ित फ़ाइलों का उपयोग करने के लिए अक्सर कोई समय दंड नहीं होता है, क्योंकि समय S3 से S3 तक एक छोटी फाइल को स्थानांतरित करके बचाया जाता है।ERDDAPमोटे तौर पर अतिरिक्त समय के लिए आवश्यक संतुलनERDDAP™फ़ाइल को डीकंप्रेस करने के लिए। इस सुविधा का उपयोग करने के लिए, आपको यह सुनिश्चित करना होगा कि डेटासेट का डेटासेट है।<फ़ाइल नाम Regex> संपीड़ित फ़ाइल प्रकार के लिए अनुमति देता है (उदाहरण के लिए, जोड़कर (|.gz) रेगेक्स के अंत तक) ।  
  • सबसे आम मामले के लिए, जहां आपके पास एक हैERDDAP™परीक्षण / विकास के लिए अपने पीसी पर स्थापित किया गया है और जहां डेटासेट में द्विआधारी डेटा फाइलें होती हैं जो S3 बाल्टी में वस्तुओं के रूप में संग्रहीत होती हैं, एक दृष्टिकोण में डेटासेट प्राप्त करने के लिए।ERDDAP™है:
    1. कुछ परीक्षण डेटा फ़ाइलों को रखने के लिए अपने पीसी पर एक निर्देशिका बनाएं।

    2. स्रोत से दो डेटा फ़ाइलों को आपके द्वारा बनाई गई निर्देशिका में डाउनलोड करें।

    3. उपयोगजनरेट DatasetXmlका हिस्सा उत्पन्न करने के लिएdatasets.xmlदो स्थानीय डेटा फ़ाइलों के आधार पर डेटासेट के लिए।

    4. जांचें कि डेटासेट वांछित के रूप में काम करता हैदासऔर/या अपने स्थानीयERDDAP।

      निम्नलिखित कदम उस डेटासेट की एक प्रति बनाते हैं (जो S3 बाल्टी से डेटा प्राप्त करेगा) सार्वजनिकERDDAP।

    5. का हिस्सा कॉपीdatasets.xmlडेटासेट के लिएdatasets.xmlजनता के लिएERDDAP™यह डेटा की सेवा करेगा।

    6. जनता पर निर्देशिका बनाएंERDDAP'स्थानीय हार्ड ड्राइव अस्थायी फ़ाइलों का कैश रखने के लिए। निर्देशिका डिस्क स्थान का एक बहुत उपयोग नहीं करेगा (नीचे कैशSizeGB देखें) ।

    7. डेटासेट का मूल्य बदलें<फ़ाइलDir> टैग ताकि यह आपके द्वारा बनाई गई निर्देशिका को इंगित करता है (हालांकि निर्देशिका खाली है) ।

    8. जोड़ेंकैशFromUrlटैग जो डेटासेट के बाल्टी नाम और वैकल्पिक उपसर्ग को निर्दिष्ट करता है (i.e., निर्देशिका) विशिष्ट मेंAws S3 URL प्रारूप किERDDAP™आवश्यकता

    9. जोड़ना [<कैशSizeGB> (#cachefromurl) डेटासेट के xml को टैग करें (उदाहरण के लिए, 10 अधिकांश डेटासेट के लिए एक अच्छा मूल्य है) बताने के लिएERDDAP™स्थानीय कैश के आकार को सीमित करने के लिए (यानी, सभी दूरस्थ फ़ाइलों को कैश करने की कोशिश न करें) ।

    10. देखें कि क्या यह जनता में काम करता हैERDDAP। ध्यान दें कि पहली बारERDDAP™डेटासेट लोड करता है, यह लोड करने के लिए लंबे समय तक ले जाएगा क्योंकिERDDAP™सभी डेटा फ़ाइलों को डाउनलोड करने और पढ़ने की आवश्यकता है।

यदि डेटासेट विशाल ग्रिड डेटा फ़ाइलों का एक विशाल संग्रह है, तो यह बहुत लंबे समय तक ले जाएगा और अव्यवहारिक होगा। कुछ मामलों में, ग्रिड डेटा फ़ाइलों के लिए,ERDDAP™आवश्यक जानकारी निकाल सकते हैं (उदाहरण के लिए, एक ग्रिड डेटा फ़ाइल में डेटा के लिए समय बिंदु) फ़ाइल नाम से और इस समस्या से बचने के लिए। देखेंद्वारा एकत्रीकरण फ़ाइल का नाम

  1. वैकल्पिक (लेकिन विशेष रूप से EDDTableFromFiles डेटासेट के लिए) , आप जोड़ सकते हैंnThreadडेटासेट को टैग करने के लिएERDDAPडेटा के लिए उपयोगकर्ता के अनुरोध का जवाब देते समय 1 से अधिक थ्रेड का उपयोग करना। यह देरी के प्रभावों को कम करता है जो तब होता है जबERDDAP™डेटा फ़ाइलों को पढ़ने से (दूरस्थ) AWS S3 बाल्टी स्थानीय कैश में और (शायद) उन्हें नष्ट करना।

AWS S3 Open Data

के भाग के रूप मेंNOAA'बिग डेटा प्रोग्राम,NOAAAWS सहित पांच संगठनों के साथ साझेदारी की है, "बाद में प्रमुख अवलोकनों और मॉडल आउटपुट की प्रतियों को संग्रहीत करने के संभावित लाभों का पता लगाने के लिए बिना किसी वितरण की आवश्यकता के सीधे डेटा पर गणना करने की अनुमति दी जाती है। AWS में डेटासेट शामिल है जो इसे से मिलता हैNOAAअपने कार्यक्रम के एक हिस्से के रूप में सार्वजनिक पहुंच की पेशकश करने के लिएAWS S3 पर खुला डेटाकिसी भी कंप्यूटर से, चाहे वह अमेज़न कम्प्यूट उदाहरण हो (किराए पर कंप्यूटर) AWS नेटवर्क या किसी भी नेटवर्क पर अपने पीसी पर। नीचे दिए गए उदाहरण के अनुसार आप सार्वजनिक रूप से सुलभ डेटासेट के साथ काम कर रहे हैं।

AWS S3 बाल्टी में फ़ाइलों को एक्सेस करना

एक निजी S3 डेटा बाल्टी के लिए, बाल्टी के मालिक को आपको बाल्टी तक पहुंच देना होगा। (AWS प्रलेखन देखें।)

सभी मामलों में, आपको AWS खाता की आवश्यकता होगी क्योंकि AWS SDK के लिएJava (जोERDDAP™एक बाल्टी की सामग्री के बारे में जानकारी पुनर्प्राप्त करने के लिए उपयोग करता है) AWS खाता क्रेडेंशियल की आवश्यकता है। (नीचे)

ERDDAP™अगर आप निर्दिष्ट करते हैं तो केवल AWS S3 बाल्टी तक पहुंच सकते हैं [<CashFromUrl> (#cachefromurl) (or)<एक विशिष्ट प्रारूप में फ़ाइलDir>: https://bucketName.s3.aws-region.amazonaws.com/prefix/
कहाँ

  • बाल्टीनाम बाल्टी नाम का छोटा रूप है, उदाहरण के लिए noaa-goes17।
  • Aws-region, उदाहरण के लिए, us-east-1, "Region" कॉलम से एक सारणी में है।AWS सेवा समापन बिंदुजहां बाल्टी वास्तव में स्थित है।
  • उपसर्ग वैकल्पिक है। यदि आप उपस्थित हैं, तो इसके साथ समाप्त होना चाहिए'/'।

उदाहरण के लिए, https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
यह URL प्रारूप AWS S3 सिफारिशों में से एक है: देखेंएक बाल्टी तक पहुंचनाऔरयह विवरण उपसर्ग।ERDDAP™की आवश्यकता है कि आप बाल्टी यूआरएल और वैकल्पिक उपसर्ग को एक URL में जोड़ते हैं ताकि निर्दिष्ट किया जा सके।<कैशFromUrl> (या<फ़ाइलDir>

टेस्ट पब्लिक AWS S3 बाल्टी

सार्वजनिक बाल्टी के लिए, आप कर सकते हैं और अपने ब्राउज़र में AWS S3 निर्देशिका के बाल्टी URL का परीक्षण करना चाहिए, उदाहरण के लिए, https://noaa-goes17.s3.us-east-1.amazonaws.com यदि बाल्टी यूआरएल सही है और उपयुक्त हैERDDAPयह एक XML दस्तावेज़ वापस कर देगा, जिसने XML दस्तावेज़ को वापस कर दिया है। (आंशिक) उस बाल्टी की सामग्री की सूची। दुर्भाग्य से, पूर्ण यूआरएल (यानी, बाल्टी यूआरएल प्लस उपसर्ग) किERDDAP™किसी दिए गए डेटासेट के लिए एक ब्राउज़र में काम नहीं करता है। AWS अपने ब्राउज़र में आसानी से बाल्टी के पदानुक्रम को ब्राउज़ करने के लिए एक प्रणाली की पेशकश नहीं करता है। (यदि वह गलत है, तो कृपया क्रिस को ईमेल करें। जॉन at noaa.gov. अन्यथा, अमेज़न, कृपया इसके लिए समर्थन जोड़ें!)

एक बाल्टी की सामग्री देखना

S3 बाल्टी में अक्सर कुछ श्रेणियों की फाइलें होती हैं, कुछ छद्म उपनिर्देशों में, जो एक जोड़ी बन सकती हैं।ERDDAP™डेटासेट बनाने के लिएERDDAP™डेटासेट, आपको प्रारंभिक निर्देशिका के लिए जानने की आवश्यकता है<कैशFromUrl> (या<फ़ाइलDir> और फ़ाइल नामों का प्रारूप जो फ़ाइलों की उस सबसेट की पहचान करता है। यदि आप किसी ब्राउज़र में बाल्टी की पूरी सामग्री को देखने की कोशिश करते हैं, तो S3 आपको पहली 1000 फाइलें दिखाएगा, जो अपर्याप्त है। वर्तमान में, आपके लिए एक बाल्टी की सभी सामग्री को देखने का सबसे अच्छा तरीका हैEDDTableFromFileNamesडेटासेट (अपने पीसी परERDDAP™और/या अपनी जनता परERDDAP) , जो आपको निर्देशिका संरचना और डाउनलोड फ़ाइलों को ब्राउज़ करने का एक आसान तरीका भी देता है। The The most of the<फ़ाइलDir> इसके लिए वह URL होगा जिसे आपने ऊपर बनाया है, उदाहरण के लिए, https://noaa-goes17.s3.us-east-1.amazonaws.com ।\[क्यों नहीं करता AWS S3 किसी को भी AWS खाते के बिना ऐसा करने का एक त्वरित और आसान तरीका प्रदान करता है?\]ध्यान दें कि जब मैं अपने पीसी पर एक गैर-अमेज़न नेटवर्क पर ऐसा करता हूं, तो ऐसा लगता है कि अमेज़ॅन एक ट्रिकल के जवाब को धीमा कर देता है (लगभग 100 (?) प्रति चंक) पहले कुछ हिस्सों के बाद (1000 फ़ाइलों का प्रति हिस्सा) डाउनलोड किया गया है। चूंकि बाल्टी में बड़ी संख्या में फाइलें हो सकती हैं (Noaa-goes17 है 26 मिलियन) एक बाल्टी की सभी सामग्री प्राप्त करने से EDDTableFromFileNames कई घंटे लग सकते हैं। (उदाहरण के लिए, 12!) समाप्त करना\[अमेज़न क्या है?\]

EDDTable AWS S3 बाल्टी के साथ FileNames Dataset से

यदि आपके पास एक बाल्टी का नाम है, लेकिन पहले से ही S3 बाल्टी में फ़ाइलों की एक सूची नहीं है, जो बाल्टी में प्रासंगिक फ़ाइलों के स्थान की पहचान करता है, तो EDDTableFromFileNames डेटासेट बनाने के लिए नीचे दिए गए निर्देशों का उपयोग करें ताकि आप S3 बाल्टी के डायरेक्टरी पदानुक्रम को ब्राउज़ कर सकें।ERDDAP'"files"प्रणाली।

  1. AWS खाता खोलें ERDDAP™उपयोगAWS SDKJavaAWS से बाल्टी जानकारी प्राप्त करने के लिए, इसलिए आपको आवश्यकता हैAWS खाता बनाएं और सक्रिय करें। यह एक बहुत बड़ा काम है, जिसमें कई चीजें सीखने के लिए होती हैं।  
  2. अपने AWS क्रेडेंशियल को जहां रखेंERDDAP™उन्हें पा सकते हैं। निर्देशों का पालन करेंविकास के लिए एडब्ल्यूएस क्रेडेंशियल और क्षेत्र की स्थापनाइसलिएERDDAP™ (विशेष रूप से, AWS SDK के लिएJava) अपने AWS क्रेडेंशियल को ढूंढने और उसका उपयोग करने में सक्षम होंगे। अगरERDDAP™नहीं मिल सकता है, आप एक देखेंगे java.lang. IllegalArgumentException: प्रोफाइल फ़ाइल में त्रुटि नहीं होगीERDDAP's log.txt फ़ाइल.

लिनक्स और मैक ओएस के लिए Hint: क्रेडेंशियल फ़ाइल उपयोगकर्ता की होम डायरेक्टरी में होना चाहिए जो टॉमकैट चल रहा है। (औरERDDAP) (इस अनुच्छेद के लिए, हम उपयोगकर्ता = tomcat मान लेंगे) एक फ़ाइल में ~/.aws/credentials कहा जाता है। यह नहीं मानो कि ~ /home/tomcat - वास्तव में सीडी ~ का उपयोग यह पता लगाने के लिए कि ऑपरेटिंग सिस्टम किस तरह सोचता है ~ उपयोगकर्ता के लिए=tomcat है। यदि यह मौजूद नहीं है तो निर्देशिका बनाएं। इसके अलावा, जब आप क्रेडेंशियल फ़ाइल को जगह में डाल देते हैं, तो सुनिश्चित करें कि उपयोगकर्ता और फ़ाइल के लिए समूह टोमकैट है और फिर यह सुनिश्चित करने के लिए chmod 400 क्रेडेंशियल का उपयोग करें कि फ़ाइल केवल उपयोगकर्ता=tomcat के लिए पढ़ी जाती है।

  1. में बाल्टी यूआरएल बनाएंप्रारूपERDDAP™आवश्यकता, उदाहरण के लिए, https://noaa-goes17.s3.us-east-1.amazonaws.com , और (सार्वजनिक बाल्टी के लिए) यह सुनिश्चित करने के लिए कि यह XML दस्तावेज़ लौटाता है जिसमें उस बाल्टी की सामग्री को आंशिक रूप से सूचीबद्ध किया गया है।  
  2. उपयोगजनरेट DatasetXmlबनानाEDDTableFromFileNamesडेटासेट:
    • प्रारंभिक निर्देशिका के लिए, इस वाक्यविन्यास का उपयोग करें: \\\ fromOnTheFly, YourBucketUrl* उदाहरण के लिए, \*\**OnTheFly से, https://noaa-goes17.s3.us-east-1.amazonaws.com/

    • फ़ाइल का नाम regex? *

    • Recursive? सच

    • रीलोड हरNMinutes? 10080

    • infoUrl? https://registry.opendata.aws/noaa-goes/

    • संस्था?NOAA

    • सारांश? कुछ नहीं (ERDDAP™स्वचालित रूप से एक सभ्य सारांश तैयार करेगा।)

    • शीर्षक? कुछ नहीं (ERDDAP™स्वचालित रूप से एक सभ्य शीर्षक तैयार करेगा।) सामान्य रूप से, आपको सुधार को सत्यापित करने और डेटासेट के हिस्से से पहले सुधार करने के लिए परिणामी XML को संपादित करना चाहिए।datasets.xml।

  3. यदि आप ऊपर दिए गए निर्देशों का पालन करते हैं और डेटासेट को लोड करते हैंERDDAP, आपने EDDTableFromFiles डेटासेट बनाया है। उदाहरण के रूप में, और किसी के लिए AWS ओपन डेटा बाल्टी से फ़ाइलों को ब्राउज़ करने और डाउनलोड करने के लिए इसे आसान बनाने के लिए, हमने EDDTableFromFileNames डेटासेट बनाया है (सूची को देखें) https://upwell.pfeg.noaa.gov/erddap/search/index.html?searchFor=awsS3Files\_ ) लगभग सभी के लिएAWS S3 ओपन डेटा बकेट। \[कुछ बाल्टी जिसमें हम शामिल नहीं थे, या तो रूट डायरेक्टरी में बड़ी संख्या में फाइलें हैं। (अधिक से अधिक समय में डाउनलोड किया जा सकता है) सार्वजनिक पहुंच की अनुमति नहीं है (क्या वे सभी को सार्वजनिक नहीं होना चाहिए?) , या अनुरोधकर्ता भुगतान बाल्टी हैं (उदाहरण के लिए, सेन्टिनेल) ।\]
    यदि आप क्लिक करते हैं"files"इन डेटासेटों में से एक के लिए लिंक, आप उस S3 बाल्टी में निर्देशिका पेड़ और फ़ाइलों को ब्राउज़ कर सकते हैं। रास्ते के कारण\\\*OnTheFly EDDTableFromFiles काम करता है, इन निर्देशिका लिस्टिंग हमेशा पूरी तरह से अद्यतन कर रहे हैं क्योंकिERDDAP™उन्हें ऑन-द-फ्लाई मिलती है। यदि आप निर्देशिका के पेड़ को एक वास्तविक फ़ाइल नाम पर क्लिक करते हैं और फ़ाइल नाम पर क्लिक करते हैं,ERDDAP™अपने अनुरोध को AWS S3 पर रीडायरेक्ट करेगा ताकि आप सीधे AWS से फाइल डाउनलोड कर सकें। फिर आप उस फ़ाइल का निरीक्षण कर सकते हैं।

मुसीबत? यदि आपके EDDTableFromFiles में लोड नहीं होगाERDDAP™ (या DasDd) एक त्रुटि संदेश के लिए log.txt फ़ाइल को देखें। यदि आप देखते हैं java.lang. IllegalArgumentException: प्रोफ़ाइल फ़ाइल शून्य त्रुटि नहीं हो सकती है, समस्या यह है कि AWS SDK के लिएJava (द्वारा इस्तेमाल कियाERDDAP) क्रेडेंशियल फ़ाइल नहीं मिल रहा है। ऊपर दिए गए निर्देशों को देखें।  

यह दुर्भाग्यपूर्ण है कि AWS केवल लोगों को सार्वजनिक बाल्टी की सामग्री देखने के लिए ब्राउज़र का उपयोग करने की अनुमति नहीं देता है।

फिर आप कर सकते हैंERDDAP™डेटासेट जो उपयोगकर्ताओं को फ़ाइलों में डेटा तक पहुंच प्रदान करते हैं।
में निर्देश देखेंERDDAP™S3 बाल्टी (ऊपर) । नमूना EDDTableFromFileNames डेटासेट के लिए जिसे आपने ऊपर बनाया था, यदि आप निर्देशिका के पेड़ में निर्देशिका और फ़ाइल नामों के साथ थोड़ा poking करते हैं, तो यह स्पष्ट हो जाता है कि शीर्ष स्तर निर्देशिका नाम (उदाहरण के लिए, ABI-L1b-RadC) क्याERDDAP™अलग डेटासेट कहेगा। आप जिस बाल्टी के साथ काम कर रहे हैं वह समान हो सकता है। तब आप अलग-अलग डेटासेट बना सकते हैंERDDAP™उन सभी डेटासेटों के लिए, उपयोग, उदाहरण के लिए, https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
जैसा<CashFromUrl>। दुर्भाग्य से, इस विशेष उदाहरण के लिए, बाल्टी में डेटासेट सभी स्तर 1 या स्तर 2 डेटासेट प्रतीत होते हैं, जो स्तर 1 या स्तर 2 डेटासेट है।ERDDAP™ विशेष रूप से अच्छा नहीं हैक्योंकि डेटासेट चर का एक अधिक जटिल संग्रह है जो विभिन्न आयामों का उपयोग करता है।  

NcML फाइलें

NcML फाइलें आपको एक या अधिक मूल स्रोत में ऑन-द-फ्लाई बदलाव निर्दिष्ट करने देती हैंNetCDF (v3) .nc, .grib, .bufr, या.hdf (v4 or v5) फ़ाइलें, और फिर हैERDDAP™इलाज.ncएमएल फ़ाइलें स्रोत फ़ाइलों के रूप में।ERDDAP™डेटासेट स्वीकार करेगा.ncजब भी मिली फ़ाइलें.ncफ़ाइलों की उम्मीद है। NcML फाइलें MUST में एक्सटेंशन है.ncमिली। देखेंUnidataएनसीएमएल प्रलेखन। NcML उपयोगी है क्योंकि आप इसके साथ कुछ चीजें कर सकते हैं (उदाहरण के लिए, एक संग्रह में विभिन्न फ़ाइलों में अलग-अलग परिवर्तन करना, जिसमें एक फ़ाइल के लिए एक विशिष्ट मान के साथ एक आयाम जोड़ना शामिल है।) , कि आप के साथ नहीं कर सकतेERDDAP'datasets.xml।

  • एक में परिवर्तन.ncएमएल फ़ाइल का अंतिम संशोधित समय फाइल को जब भी डेटासेट को फिर से लोड किया जाता है, लेकिन अंतर्निहित में बदल जाता है.ncडेटा फ़ाइलों को सीधे नहीं देखा जाएगा।
  • Hint: NcML है\*बहुत\*NcML फ़ाइल में कुछ वस्तुओं के आदेश के प्रति संवेदनशील। निर्दिष्ट आदेश में निर्देशों की एक श्रृंखला निर्दिष्ट करने के रूप में NcML के बारे में सोचें, स्रोत फ़ाइलों को बदलने के इरादे से (NcML फ़ाइल के प्रारंभ/शीर्ष पर राज्य) गंतव्य फ़ाइलों में (NcML फ़ाइल के अंत / नीचे राज्य) ।

NcML का विकल्पNetCDFऑपरेटर (NCO) । बड़ा अंतर यह है कि एनसीएमएल ऑन-द-फ्लाई में बदलाव के लिए एक प्रणाली है (इसलिए स्रोत फ़ाइलों को परिवर्तित नहीं किया जाता है) जबकिNCOपरिवर्तन करने के लिए इस्तेमाल किया जा सकता है (या नए संस्करण) फ़ाइलें दोनोंNCOऔर NcML बहुत लचीला हैं और आप लगभग किसी भी बदलाव को बनाने की अनुमति देते हैं जो आप फ़ाइलों के बारे में सोच सकते हैं। दोनों के लिए, वास्तव में यह जानने के लिए चुनौतीपूर्ण हो सकता है कि आप क्या करना चाहते हैं -- इसी तरह के उदाहरणों के लिए वेब की जाँच करें। दोनों नेटसीडीएफ तैयार करने के लिए उपयोगी उपकरण हैं औरHDFउपयोग के लिए फ़ाइलों के साथERDDAPविशेष रूप से, क्या से परे परिवर्तन करने के लिएERDDAP's हेरफेर प्रणाली कर सकते हैं।

उदाहरण #1: एक एकल मान के साथ एक समय आयाम जोड़ना यहाँ एक है.ncएमएल फ़ाइल जो एक नया बाहरी आयाम बनाता है (समय, 1 मान के साथ: 1041379200) और उस आयाम को A2003001.L3m\_day\_PIC\_pic\_4km नामक फ़ाइल में चित्र चर में जोड़ता है।.nc:

    <netcdf xmlns='https://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2'>
<variable name='time' type='int' shape='time' />
<aggregation dimName='time' type='joinNew'>
<variableAgg name='pic'/>
<netcdf location='A2003001.L3m\\_DAY\\_PIC\\_pic\\_4km.nc' coordValue='1041379200'/>
</aggregation>
</netcdf>

उदाहरण #2: मौजूदा समय मूल्य बदलना कभी कभी स्रोत.ncपहले से ही फ़ाइल में एक समय आयाम और समय मान है, लेकिन मूल्य गलत है (अपने उद्देश्य के लिए) । यह.ncएमएल फ़ाइल कहते हैं: "19810825230030-NCEI" नामक डेटा फ़ाइल के लिए, आयाम चर के लिए"time", 1970-01-01T00:00:00Z के बाद से इकाइयों को 'सेकेंड' होने की विशेषता निर्धारित की और 367588800 होने का समय मान निर्धारित किया।

    <netcdf xmlns='https://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2'
location="19810825230030-NCEI-L3C\\_GHRSST-SSTskin-AVHRR\\_Pathfinder-PFV5.3\\_NOAA07\\_G\\_1981237\\_day-v02.0-fv01.0.nc">
<variable name="time">
<attribute name='units' value='seconds since 1970-01-01T00:00:00Z' />
<values>367588800</values>
</variable>
</netcdf>

NetCDFऑपरेटर (NCO)

"नेटसीडीएफ ऑपरेटर" (NCO) एक दर्जन स्टैंडअलोन, कमांड लाइन प्रोग्राम है कि netCDF लेने शामिल\[v3\],HDF \[v4 or v5\],\[.grib, .bufr,\]और/orDAPइनपुट के रूप में फाइलें, फिर संचालित करें (उदाहरण के लिए, नए डेटा प्राप्त करें, आंकड़े, प्रिंट, हाइपरस्लाब, मेटाडाटा में हेरफेर करें) और पाठ, द्विआधारी या NetCDF प्रारूपों में स्क्रीन या फ़ाइलों के लिए परिणाम का उत्पादन।NCOग्रिड वैज्ञानिक डेटा का विश्लेषण। शैल-समन्द शैली कीNCOउपयोगकर्ताओं को संवादात्मक रूप से फ़ाइलों में हेरफेर करने और विश्लेषण करने की अनुमति देता है, या अभिव्यक्तिपूर्ण लिपियों के साथ जो उच्च स्तर के प्रोग्रामिंग वातावरण के कुछ ओवरहेड से बच जाते हैं। (सेNCOहोमपेज) ।

विकल्पNCOहैएनसीएमएल। बड़ा अंतर यह है कि एनसीएमएल ऑन-द-फ्लाई में बदलाव के लिए एक प्रणाली है (इसलिए स्रोत फ़ाइलों को परिवर्तित नहीं किया जाता है) जबकिNCOपरिवर्तन करने के लिए इस्तेमाल किया जा सकता है (या नए संस्करण) फ़ाइलें दोनोंNCOऔर NcML बहुत लचीला हैं और आप लगभग किसी भी बदलाव को बनाने की अनुमति देते हैं जो आप फ़ाइलों के बारे में सोच सकते हैं। दोनों के लिए, वास्तव में यह जानने के लिए चुनौतीपूर्ण हो सकता है कि आप क्या करना चाहते हैं -- इसी तरह के उदाहरणों के लिए वेब की जाँच करें। दोनों नेटसीडीएफ तैयार करने के लिए उपयोगी उपकरण हैं औरHDFउपयोग के लिए फ़ाइलों के साथERDDAPविशेष रूप से, क्या से परे परिवर्तन करने के लिएERDDAP's हेरफेर प्रणाली कर सकते हैं।

उदाहरण के लिए, आप उपयोग कर सकते हैंNCOसमय चर की इकाइयों को फ़ाइलों के एक समूह में संगत बनाने के लिए जहां वे मूल रूप से संगत नहीं थे। या, आप उपयोग कर सकते हैंNCOलागू करने के लिएscale\_factorऔरadd\_offsetफ़ाइलों के एक समूह में जहांscale\_factorऔरadd\_offsetविभिन्न स्रोत फ़ाइलों में अलग-अलग मान होते हैं। (अब आप उन समस्याओं का सामना कर सकते हैंERDDAP™माध्यमEDDGridसे NcFilesUnpacked, जो का एक संस्करण हैEDDGridFromNcFiles, जो पैक किए गए डेटा को अनपैक करता है और एक संग्रह फ़ाइलों से निपटने के लिए कम स्तर पर समय मानों को मानकीकृत करता है, जिसमें अलग-अलग होते हैं।scale\_factors औरadd\_offset, या अलग समय इकाइयों।)

NCOफ्री एंड ओपन सोर्स सॉफ्टवेयर है जो उपयोग करता हैGPL 3.0लाइसेंस

उदाहरण #1: इकाई बनाना EDDGridFromFiles and EDDTable फ़ाइलों से जोर देते हैं कि किसी दिए गए चर के लिए इकाइयां सभी फाइलों में समान हैं। यदि कुछ फाइलें तिरछे हैं (कार्यात्मक नहीं) अन्य (जैसे, समय इकाई) से अलग 1970-01-01 00:00:00 से UTC" से दूसरे "seconds since 1970-01-01T00:00:00Z", आप उपयोग कर सकते हैंNCO'हिन्दीसभी फाइलों में इकाइयों को बदलने के लिए समान होना nco/ncatted -a इकाइयों, समय, o, c, 1970-01-01T00:00Z'\*.nc
\[इस तरह के कई समस्याओं के लिए EDDTableFrom ... फ़ाइलें, अब आप उपयोग कर सकते हैंमानकीकरण क्याबताने के लिएERDDAPस्रोत फ़ाइलों को मानकीकृत करने के लिए क्योंकि उन्हें पढ़ा जाता हैERDDAP।\]

डेटासेट के आकार की सीमा

आप नीचे "2 बिलियन" के कई संदर्भ देखेंगे। सही ढंग से, यह 2,147,483,647 के लिए एक संदर्भ है (2^31-1) 32-bit हस्ताक्षरित पूर्णांक का अधिकतम मान है। कुछ कंप्यूटर भाषाओं में, उदाहरण के लिएJava (जोERDDAP™में लिखा गया है) यह सबसे बड़ा डेटा प्रकार है जिसका उपयोग कई डेटा संरचनाओं के लिए किया जा सकता है (उदाहरण के लिए, एक सरणी का आकार) ।

स्ट्रिंग मूल्यों के लिए (उदाहरण के लिए, चर नाम, विशेषता नाम, स्ट्रिंग विशेषता मान और स्ट्रिंग डेटा मान के लिए) , प्रति स्ट्रिंग वर्णों की अधिकतम संख्याERDDAP™~2 बिलियन है। लेकिन लगभग सभी मामलों में, यदि कोई स्ट्रिंग उचित आकार से अधिक हो तो छोटी या बड़ी समस्याएं होंगी (उदाहरण के लिए, चर नामों और विशेषता नामों के लिए 80 वर्ण, और अधिकांश स्ट्रिंग विशेषता मूल्यों और डेटा मूल्यों के लिए 255 वर्ण) । उदाहरण के लिए, वेब पेज जो लंबे परिवर्तनीय नाम प्रदर्शित करते हैं, awkwardly चौड़े और लंबे परिवर्तनीय नामों को तबाह किया जाएगा जब वे प्रतिक्रिया फ़ाइल प्रकार की सीमा से अधिक हों।

ग्रिड डेटासेट के लिए:

  • अधिकतम संख्याaxisVariables ~2 बिलियन है। अधिकतम संख्याdataVariables ~2 बिलियन है। लेकिन अगर किसी डेटासेट में>100 चर हैं, तो यह उपयोगकर्ताओं के लिए उपयोग करने के लिए बोझिल होगा। यदि कोई डेटासेट में 1 मिलियन चर हैं, तो आपके सर्वर को बहुत सारे भौतिक स्मृति की आवश्यकता होगी और अन्य समस्याएं होंगी।
  • प्रत्येक आयाम का अधिकतम आकार (axisVariable) ~2 बिलियन मान है।
  • मुझे लगता है कि कोशिकाओं की अधिकतम कुल संख्या (सभी आयाम आकारों का उत्पाद) असीमित है, लेकिन यह ~ 9e18 हो सकता है।

सारणीबद्ध डेटासेट के लिए:

  • अधिकतम संख्याdataVariables ~2 बिलियन है। लेकिन अगर किसी डेटासेट में>100 चर हैं, तो यह उपयोगकर्ताओं के लिए उपयोग करने के लिए बोझिल होगा। यदि कोई डेटासेट में 1 मिलियन चर हैं, तो आपके सर्वर को बहुत सारे भौतिक स्मृति की आवश्यकता होगी और अन्य समस्याएं होंगी।
  • स्रोतों की अधिकतम संख्या (उदाहरण के लिए, फ़ाइलें) कि कुल किया जा सकता है ~2 अरब है।
  • कुछ मामलों में, एक व्यक्तिगत स्रोत से पंक्तियों की अधिकतम संख्या (उदाहरण के लिए, फ़ाइल, लेकिन डेटाबेस नहीं) ~2 अरब पंक्तियों है।
  • मुझे नहीं लगता कि अन्य सीमाएं हैं।

ग्रिड और सारणीबद्ध डेटासेट दोनों के लिए, सबसेट के आकार पर कुछ आंतरिक सीमाएं हैं जिन्हें एक उपयोगकर्ता द्वारा एक अनुरोध में अनुरोध किया जा सकता है। (अक्सर किसी चीज के 2 बिलियन या ~ 9e18 से संबंधित) लेकिन यह बहुत अधिक संभावना है कि एक उपयोगकर्ता फ़ाइल-प्रकार-विशिष्ट सीमाओं को हिट करेगा।

  • NetCDFसंस्करण 3.ncफाइलें 2GB बाइट्स तक सीमित हैं। (यदि यह वास्तव में किसी के लिए एक समस्या है, तो मुझे बताएं: मैं समर्थन जोड़ सकता हूंNetCDFसंस्करण 3.nc64 बिट एक्सटेंशन याNetCDFसंस्करण 4, जो सीमा को काफी बढ़ा देगा, लेकिन अनंत नहीं।)
  • ब्राउज़र डेटा के केवल ~500MB के बाद दुर्घटनाग्रस्त हो जाता है, इसलिएERDDAP™प्रतिक्रिया को सीमित करता है.htmlTableडेटा के ~400MB का अनुरोध करता है।
  • कई डेटा विश्लेषण कार्यक्रमों में समान सीमा होती है (उदाहरण के लिए, आयाम का अधिकतम आकार अक्सर ~2 बिलियन मान होता है) इसलिए फ़ाइल-प्रकार-विशिष्ट सीमाओं के आसपास पहुंचने के लिए कड़ी मेहनत करने का कोई कारण नहीं है।
  • फ़ाइल-प्रकार-विशिष्ट सीमाएं उस में उपयोगी होती हैं जिसमें वे वास्तव में डेटा की विशाल मात्रा के लिए नेव अनुरोधों को रोकते हैं। (उदाहरण के लिए, "मुझे इस डेटासेट के सभी प्राप्त करें" जब डेटासेट में 20 टीबी डेटा होता है) , जो सप्ताह या महीने डाउनलोड करने के लिए ले जाएगा। अब डाउनलोड करने की संभावना है कि यह कई कारणों से विफल हो जाएगा।
  • फ़ाइल-प्रकार-विशिष्ट सीमाएं इस बात में उपयोगी हैं कि वे उपयोगकर्ता को उचित आकार के सबसेट से निपटने के लिए मजबूर करते हैं। (उदाहरण के लिए, एक समय बिंदु प्रत्येक से डेटा के साथ फ़ाइलों के माध्यम से एक बड़े ग्रिड डेटासेट से निपटने) ।  

ACDD-1.3 पर स्विच करें

हम (वास्तव मेंजनरेट DatasetXml) वर्तमान में सुझावACDD संस्करण 1.3, जिसे 2015 की शुरुआत में संशोधित किया गया था और जिसे वैश्विक सम्मेलनों की विशेषता में "ACDD-1.3" कहा जाता है। पहलेERDDAP™संस्करण 1.62 (जून 2015 में जारी) ,ERDDAP™मूल, संस्करण 1.0, का उपयोग / सिफारिश कीNetCDFडेटासेट डिस्कवरी के लिए योगदान सम्मेलनजिसे "" कहा गया थाUnidataडेटासेट डिस्कवरी v1.0" वैश्विक सम्मेलनों में औरMetadata\_Conventionsविशेषताएँ

यदि आपके डेटासेट ACDD के पहले संस्करणों का उपयोग करते हैं, तो हम अनुशंसा करते हैं कि आप ACDD-1.3 पर स्विच करें। यह मुश्किल नहीं है। ACDD-1.3 अत्यधिक पिछड़े संस्करण 1.0 के साथ संगत है। सभी डेटासेट के लिए स्विच करने के लिए (सिवायEDDGridFromErddap and EDDTable FromErddap datasets) :

  1. वैश्विक मूल्य निर्धारणMetadata\_Conventionsजोड़कर विशेषता (या मौजूदा बदलकरMetadata\_Conventionsविशेषता)
        <att name="Metadata\\_Conventions">null</att>  

डेटासेट के वैश्विक<addAttributes>   2. यदि डेटासेट वैश्विक में एक कन्वेंशन विशेषता है<addAttributes> सभी बदलेंUnidataडेटासेट डिस्कवरी v1.0 "ACDD-1.3" के संदर्भ में। यदि डेटासेट के पास वैश्विक में एक कन्वेंशन विशेषता नहीं है<addAttributesइसके बाद ACDD-1.3 को संदर्भित करता है। उदाहरण के लिए,

        <att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>  

  3. यदि डेटासेट वैश्विक हैstandard\_name\_vocabularyविशेषता, उदाहरण के लिए, कृपया मूल्य के प्रारूप को बदलने के लिए,

        <att name="standard\\_name\\_vocabulary">CF Standard Name Table v65</att>  

यदि संदर्भ का पुराना संस्करण हैCF मानक नाम तालिका। शायद वर्तमान संस्करण में स्विच करना एक अच्छा विचार है (65, जैसा कि हम इसे लिखते हैं) चूंकि नए मानक नामों को बाद के संस्करणों के साथ उस तालिका में जोड़ा जाता है, लेकिन पुराने मानक नामों को शायद ही कभी अलग किया जाता है और कभी हटाया नहीं जाता है।   4. हालांकि ACDD-1.0 में वैश्विक गुण शामिल थेcreator\_name,creator\_email,creator\_url,जनरेट DatasetXmlकभी कभी कभी कभी नहीं मिलाERDDAP™v1.50. यह महत्वपूर्ण जानकारी है:

  • creator\_nameउपयोगकर्ताओं को डेटासेट के निर्माता को जानने / उद्धृत करने देता है।
  • creator\_emailउपयोगकर्ताओं को डेटासेट के निर्माता से संपर्क करने के लिए पसंदीदा ईमेल पता बताता है, उदाहरण के लिए यदि उनके पास डेटासेट के बारे में प्रश्न हैं।
  • creator\_urlउपयोगकर्ताओं को निर्माता के बारे में अधिक जानने का एक तरीका देता है।
  • ERDDAP™प्रत्येक डेटासेट के लिए FGDC और ISO 19115-2 / 19139 मेटाडाटा दस्तावेज़ उत्पन्न करते समय इस सभी जानकारी का उपयोग करता है। उन दस्तावेजों का अक्सर बाहरी खोज सेवाओं द्वारा उपयोग किया जाता है।

कृपया इन विशेषताओं को डेटासेट के वैश्विक स्तर पर जोड़ें<addAttributes>

        <att name="creator\\_name">NOAA NMFS SWFSC ERD</att>  
<att name="creator\\_email">erd.data@noaa.gov</att>
<att name="creator\\_url">https://www.pfeg.noaa.gov</att>

यही है। मुझे आशा है कि यह बहुत मुश्किल नहीं था।  

जैर

संस्करण 2.25ERDDAP™स्थानीय पढ़ सकते हैं Zarr फ़ाइलों का उपयोगEDDTableFromNcFilesऔरEDDGridFromNcFiles

(अगस्त 2019 तक) हम आसानी से गलत हो सकते हैं, लेकिन हम अभी तक आश्वस्त नहीं हैं किजैर, या इसी तरह के सिस्टम जो डेटा फ़ाइलों को छोटे टुकड़ों में तोड़ते हैं, की समस्या के लिए महान समाधान हैंERDDAP™Amazon AWS S3 जैसी क्लाउड सेवाओं में संग्रहीत डेटा को पढ़ना। जैर एक महान तकनीक है जिसने विभिन्न स्थितियों में अपनी उपयोगिता को दिखाया है, हम सिर्फ यह सुनिश्चित नहीं कर रहे हैं कि ज़ार कुछ स्थितियों में अपनी उपयोगिता को दर्शाता है।ERDDAP+ S3 उन स्थितियों में से एक होगा। ज्यादातर हम कह रहे हैं: इससे पहले कि हम ज़ार में हमारे सभी डेटा को स्टोर करने का प्रयास करते हैं, आइए कुछ परीक्षण करते हैं कि क्या यह वास्तव में बेहतर समाधान है।

क्लाउड में डेटा एक्सेस करने वाली समस्याएं विलंबता हैं (पहले लैग डेटा प्राप्त करने के लिए) फ़ाइल स्तर का उपयोग (ब्लॉक-स्तर की पहुंच के बजाय) । Zarr फ़ाइल स्तर की पहुंच समस्या को हल करता है, लेकिन विलंबता के बारे में कुछ भी नहीं करता है। सिर्फ फाइल डाउनलोड करने की तुलना में (इसलिए इसे ब्लॉक-लेवल एक्सेस के साथ स्थानीय फ़ाइल के रूप में पढ़ा जा सकता है) ज़ार भी विलंबता समस्या को बढ़ा सकता है क्योंकि ज़ार के साथ, एक फ़ाइल पढ़ने में अब फ़ाइल के विभिन्न हिस्सों को पढ़ने के लिए कई कॉल शामिल हैं। (प्रत्येक अपने खुद के अंतराल के साथ) । विलंबता की समस्या को अनुरोधों को समानांतर करके हल किया जा सकता है, लेकिन यह एक उच्च स्तरीय समाधान है, जो जैर पर निर्भर नहीं है।

और जैर के साथ (संबंधिक डेटाबेस के साथ) , हम डेटा फ़ाइल होने की सुविधा खो देते हैं एक सरल, एकल फ़ाइल है जिसे आप आसानी से अखंडता को सत्यापित कर सकते हैं, या एक प्रतिलिपि बना सकते हैं।

ERDDAP™ (V2) यूआरएल स्रोत से फ़ाइलों के स्थानीय कैश को बनाए रखने के लिए एक प्रणाली है (उदाहरण के लिए, S3) (देखें)<कैशFromUrl> और<कैशमैक्सGB> (#cachefromurl) ). नया [<nThreads> (#nthread) उच्च स्तर पर डेटा पुनर्प्राप्ति को समानांतर करके विलंबता समस्या को कम करना चाहिए।<CashFromUrl> कई परिदृश्यों के लिए बहुत अच्छी तरह से काम करता है। क्या हम यह सुनिश्चित नहीं कर रहे हैं कि कैसे फायदेमंद हो<nThreads> आगे परीक्षण के बिना है। हम मानते हैं कि हमने एक अच्छा नेटवर्क कनेक्शन के साथ AWS उदाहरण पर टाइमिंग टेस्ट नहीं किया है, लेकिन हमने फ़ाइलों के विभिन्न दूरस्थ URL स्रोतों के साथ सफलतापूर्वक परीक्षण किया है। औरERDDAP'<कैशFromUrl> किसी भी प्रकार की डेटा फ़ाइल के साथ काम करता है (उदाहरण के लिए.nc,.hdf, .csv,.jsonlCSV) , भले ही बाहरी रूप से संपीड़ित हो (उदाहरण के लिए.gz) बिना फाइलों में किसी बदलाव के (उदाहरण के लिए, उन्हें Zarr संग्रह के रूप में फिर से लिखना) ।

यह संभावना है कि विभिन्न परिदृश्य अलग-अलग समाधानों का पक्ष लेंगे, उदाहरण के लिए, केवल एक बार फ़ाइल का हिस्सा पढ़ने की आवश्यकता होती है (जैर जीतेगा) , बनाम एक बार एक फ़ाइल के सभी पढ़ने की आवश्यकता होती है, बनाम बार-बार एक फ़ाइल पढ़ने की आवश्यकता होती है ()<कैशFromUrl> जीत जाएगा।

ज्यादातर हम कह रहे हैं: इससे पहले कि हम ज़ार में हमारे सभी डेटा को स्टोर करने का प्रयास करते हैं, आइए कुछ परीक्षण करते हैं कि क्या यह वास्तव में बेहतर समाधान है।

टाइप डेटासेट की सूची

यदि आपको सही डेटासेट प्रकार चुनने में मदद की आवश्यकता है, तो देखेंडेटासेट प्रकार का चयन करना

डेटासेट के प्रकार दो श्रेणियों में आते हैं। (क्यों?)

EDDGrid

  • EDDGrid डेटासेट ग्रिड डेटा संभालती है।
    • मेंEDDGridडेटासेट, डेटा चर डेटा के बहु-आयामी सरणी हैं।
    • प्रत्येक आयाम के लिए MUST एक अक्ष परिवर्तनीय है। एक्सिस वेरिएबल्स MUST को इस क्रम में निर्दिष्ट किया जाएगा कि डेटा वेरिएबल्स उनका उपयोग करते हैं।
    • मेंEDDGridडेटासेट, सभी डेटा चर MUST उपयोग (शेयर) सभी अक्ष चर। (क्यों? क्या होगा?)
    • क्रमबद्ध आयाम मान - सभी मेंEDDGridडेटासेट, प्रत्येक आयाम MUST क्रमबद्ध क्रम में होना चाहिए (चढ़ना या उतरना) । प्रत्येक अनियमित रूप से स्पेस किया जा सकता है। कोई संबंध नहीं हो सकता है। यह आवश्यकता हैCF मेटाडाटा मानक। यदि किसी भी आयाम के मान क्रमबद्ध क्रम में नहीं हैं, तो डेटासेट को लोड नहीं किया जाएगा और लोड नहीं किया जाएगा।ERDDAP™लॉग फाइल में प्रथम अनॉर्टेड मान की पहचान करेगा, बड़ाParentDirectory /logs/log.txt।

कुछ उपवर्गों में अतिरिक्त प्रतिबंध हैं (विशेष रूप से,)EDDGridकुल मौजूदा आयाम की आवश्यकता है कि बाहरी (लगभग, पहले) आयाम आरोही हो।

Unsorted आयाम मान लगभग हमेशा स्रोत डेटासेट के साथ एक समस्या का संकेत देते हैं। यह आमतौर पर तब होता है जब एकत्रीकरण में एक गलतनाम या अनुचित फ़ाइल शामिल की जाती है, जिससे एक अनधिकृत समय आयाम होता है। इस समस्या को हल करने के लिए त्रुटि संदेश देखेंERDDAP™लॉग.txt फ़ाइल को ऑफेंडिंग टाइम वैल्यू खोजने के लिए। फिर संबंधित फ़ाइल खोजने के लिए स्रोत फ़ाइलों को देखें (पहले या एक के बाद) यह एकत्रीकरण में नहीं है।

  • अधिक पूर्ण विवरण देखेंEDDGridडेटा मॉडल
  • The The most of theEDDGridडेटासेट प्रकार हैं:
    • EDDGridAudioFilesस्थानीय ऑडियो फ़ाइलों के एक समूह से डेटा एकत्र करता है।
    • EDDGridFromDapग्रिड डेटा को संभालती हैDAPसर्वर
    • EDDGridFromEDDTableआपको एक सारणीबद्ध डेटासेट को ग्रिड डेटासेट में बदलने देता है।
    • EDDGridसेंधरिमोट से ग्रिड डेटा को संभालती हैERDDAP।
    • EDDGridEtopoबस अंतर्निहित ETOPO स्थलाकृति डेटा को संभालती है।
    • EDDGridसेफिलसभी का सुपरक्लास हैEDDGrid...फिल्म कक्षाओं से।
    • EDDGridFromMergeIRFilesस्थानीय MergeIR समूह से डेटा एकत्र करता है.gzफ़ाइलें
    • EDDGridFromNcFilesस्थानीय समूह से डेटा एकत्र करनाNetCDF (v3) .ncऔर संबंधित फ़ाइलें।
    • EDDGridसे NcFilesUnpackedअगर एक संस्करण हैEDDGridFromNcFiles, जो स्थानीय लोगों के समूह से डेटा एकत्र करता हैNetCDF (v3) .ncऔर संबंधित फाइलें, जोERDDAP™कम स्तर पर अनपैक।
    • EDDGridLonPM180एक बच्चे के अक्षांश मूल्यों को संशोधित करता हैEDDGridइसलिए वे -180 से 180 रेंज में हैं।
    • EDDGridLon0360एक बच्चे के अक्षांश मूल्यों को संशोधित करता हैEDDGridइसलिए वे 0 से 360 रेंज में हैं।
    • EDDGridसाइडबायसाइडदो या अधिकEDDGridडेटासेट साइड बाय साइड।
    • EDDGridसमग्र आयामदो या अधिकEDDGridडेटासेट, जिनमें से प्रत्येक में पहले आयाम के लिए मूल्यों की एक अलग श्रृंखला है, लेकिन अन्य आयामों के लिए समान मान।
    • EDDGridकॉपीकिसी अन्य की स्थानीय प्रतिलिपि बना सकते हैंEDDGrid's डेटा और स्थानीय प्रतिलिपि से डेटा कार्य करता है।  
  • सबEDDGridडेटासेट एक nThread सेटिंग का समर्थन करता है, जो बताता हैERDDAP™कितने धागे का उपयोग करने के लिए जब एक अनुरोध का जवाब देते हैं। देखेंnThreadविवरण के लिए प्रलेखन।  

EDDTable

  • EDDTable डेटासेट सारणीबद्ध डेटा को संभालती है।
    • सारणीबद्ध डेटा को पंक्तियों और स्तंभों के साथ डेटाबेस जैसी तालिका के रूप में दर्शाया जा सकता है। प्रत्येक स्तंभ (एक डेटा चर) एक नाम, विशेषताओं का एक सेट है, और सिर्फ एक प्रकार का डेटा स्टोर करता है। प्रत्येक पंक्ति में एक अवलोकन है (या संबंधित मूल्यों का समूह) । डेटा स्रोत एक अलग डेटा संरचना, एक अधिक जटिल डेटा संरचना, और/या एकाधिक डेटा फ़ाइलों में डेटा हो सकता है, लेकिनERDDAP™डेटा को एक सारणीबद्ध डेटासेट के रूप में पेश करने के लिए डेटाबेस जैसी तालिका में स्रोत डेटा को समतल करने में सक्षम होना चाहिएERDDAP।
    • अधिक पूर्ण विवरण देखेंEDDTable डेटा मॉडल
    • EDDTable Dataset प्रकार हैं:
      • EDDTableFromAllDatasetsएक उच्च स्तरीय डेटासेट है जिसमें आपके सभी अन्य डेटासेट के बारे में जानकारी है।ERDDAP।

      • EDDTableFromAsciiFilesकॉमा-, टैब-, सेमीकोलॉन-, या स्पेस-सेपरेटेड सारणीबद्ध ASCII डेटा फ़ाइलों से डेटा एकत्र करता है।

      • EDDTableFromAsciiServiceसभी EDDTableFromAsciiService.

      • EDDTableFromAsciiServiceNOSकुछ से डेटा संभालती हैNOAAएनओएस वेब सेवाएं

      • EDDTableFromAudioFilesस्थानीय ऑडियो फ़ाइलों के एक समूह से डेटा एकत्र करता है।

      • EDDTableFrom AwsXmlFilesस्वचालित मौसम स्टेशन के एक सेट से डेटा एकत्र करता है (एडब्ल्यूएस) XML फ़ाइलें

      • EDDTableFromCassandraएक Cassandra तालिका से सारणीबद्ध डेटा को संभालती है।

      • EDDTableFromColumnarAsciiFilesस्थिर-चौड़ाई डेटा कॉलम के साथ सारणीबद्ध ASCII डेटा फ़ाइलों से डेटा एकत्र करता है।

      • EDDTableFromDapSequenceसे सारणीबद्ध डेटा संभालती हैDAPअनुक्रम सर्वर

      • EDDTableFromDatabaseएक डेटाबेस तालिका से सारणीबद्ध डेटा को संभालती है।

      • EDDTableFromEDDGridआपको एक EDDTable डेटासेट बनाने की अनुमति देता हैEDDGridडेटासेट।

      • EDDTableFromErddapरिमोट से सारणीबद्ध डेटा को संभालती हैERDDAP।

      • EDDTableFromFileNamesसर्वर की फ़ाइल सिस्टम में फ़ाइलों के एक समूह के बारे में जानकारी से डेटासेट बनाता है, लेकिन यह फ़ाइलों के भीतर से डेटा की सेवा नहीं करता है।

      • EDDTableFromFilesसभी EDDTableFrom की सुपरक्लास है।

      • EDDTableFromHttpGetहैERDDAPडेटा आयात के साथ-साथ डेटा निर्यात के लिए केवल सिस्टम।

      • EDDTableFromHyraxफ़ाइलें (डिप्रेषित) फ़ाइलों से डेटा को एकत्रित करता है जिसमें साझा आयामों के साथ कई चर होते हैं, जो एक द्वारा सेवा की जाती है।Hyrax OPeNDAPसर्वर

      • EDDTableFromInvalidCRAFilesसे डेटा एकत्र करनाNetCDF (v3) .ncफ़ाइलें जो CF DSG Contiguous Ragged Array का एक विशिष्ट, अवैध, संस्करण का उपयोग करती हैं (सीआरए) फ़ाइलें हालांकिERDDAP™इस फ़ाइल प्रकार का समर्थन करता है, यह एक अमान्य फ़ाइल प्रकार है जिसे कोई भी उपयोग करना शुरू नहीं करना चाहिए। वर्तमान में इस फ़ाइल प्रकार का उपयोग करने वाले समूह को दृढ़ता से उपयोग करने के लिए प्रोत्साहित किया जाता हैERDDAP™मान्य CF DSG CRA फ़ाइलों को उत्पन्न करने और इन फ़ाइलों का उपयोग बंद करने के लिए।

      • EDDTableFromJsonlCSVFilesसे डेटा एकत्र करनाJSON लाइन्स CSV फ़ाइलों

      • EDDTableFromMultidimNcFilesसे डेटा एकत्र करनाNetCDF (v3) .ncसाझा आयामों के साथ कई चर के साथ फ़ाइलें।

      • EDDTableFromNcFilesसे डेटा एकत्र करनाNetCDF (v3) .ncसाझा आयामों के साथ कई चर के साथ फ़ाइलें। मौजूदा डेटासेट के लिए इस डेटासेट प्रकार का उपयोग जारी रखना ठीक है, लेकिन नए डेटासेट के लिए हम इसके बजाय EDDTableFromMultidimNcFiles का उपयोग करने की सलाह देते हैं।

      • EDDTableFromNcCFFilesसे डेटा एकत्र करनाNetCDF (v3) .ncजो फ़ाइलों द्वारा निर्दिष्ट फ़ाइल प्रारूपों में से एक का उपयोग करते हैंCF Discrete Sampling Geometries (DSG) सम्मेलन। लेकिन फ़ाइलों के लिए बहुआयामी CF DSG वेरिएंट का उपयोग करते हुए, उपयोग करते हैंEDDTableFromMultidimNcFilesइसके बजाय।

      • EDDTableFromNccsvFilesसे डेटा एकत्र करनाएनसीसीएसवीASCII फ़ाइलें.

      • EDDTableFromNOS (डिप्रेषित) NOS XML सर्वर से सारणीबद्ध डेटा को संभालती है।

      • EDDTableFromOBISओबीआईएस सर्वर से सारणीबद्ध डेटा को संभालती है।

      • EDDTableFromParquetFilesडेटा को संभालनालकड़ी

      • EDDTableFromSOSसे सारणीबद्ध डेटा संभालती हैSOSसर्वर

      • EDDTableFromThreddsFiles (डिप्रेषित) फ़ाइलों से डेटा को एकत्रित करता है जिसमें साझा आयामों के साथ कई चर होते हैं, जो एक द्वारा सेवा की जाती है।थर्डOPeNDAPसर्वर

      • EDDTableFromWFSफ़ाइलें (डिप्रेषित) सभी डेटा की एक स्थानीय प्रति बनाता हैArcGISMapServerWFSइसलिए डेटा को फिर से संरक्षित किया जा सकता हैERDDAP™उपयोगकर्ता

      • EDDTableAggregateRowsEDDTable Dataset के एक समूह से EDDTable Dataset बना सकते हैं।

      • EDDTableCopyकई प्रकार के EDDTable डेटासेट की स्थानीय प्रतिलिपि बना सकते हैं और फिर स्थानीय प्रतिलिपि से डेटा को जल्दी से संरक्षित कर सकते हैं।

डेटासेट प्रकार के विस्तृत विवरण

EDDGridFromDap

EDDGridFromDap ग्रिड चर संभालती हैDAPसर्वर

  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। आप उस जानकारी को इकट्ठा कर सकते हैं जिसे आप tweak करना चाहते हैं या एक के लिए अपना खुद का XML बना सकते हैंEDDGridअपने ब्राउज़र में स्रोत डेटासेट के डीडीएस और डीएएस फ़ाइलों को देखकर डेटासेट (.das और .dds जोड़करsourceUrlउदाहरण के लिए, https://thredds1.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day.dds ) ।  
  • EDDGridFromDap किसी भी बहु-आयामी चर से डेटा प्राप्त कर सकता हैDAPडेटा सर्वर (पहले,EDDGridFromDap को "grid" के रूप में नामित चर तक सीमित किया गया था, लेकिन यह अब आवश्यकता नहीं है।)
     
  • क्रमबद्ध आयाम मान - प्रत्येक आयाम के लिए मान को क्रमबद्ध क्रम में होना चाहिए (चढ़ना या उतरना) । मूल्यों को अनियमित रूप से स्पेस किया जा सकता है। कोई संबंध नहीं हो सकता है। यह आवश्यकता हैCF मेटाडाटा मानक। यदि किसी भी आयाम के मान क्रमबद्ध क्रम में नहीं हैं, तो डेटासेट को लोड नहीं किया जाएगा और लोड नहीं किया जाएगा।ERDDAP™लॉग फाइल में प्रथम अनॉर्टेड मान की पहचान करेगा, बड़ाParentDirectory /logs/log.txt।

Unsorted आयाम मान लगभग हमेशा स्रोत डेटासेट के साथ एक समस्या का संकेत देते हैं। यह आमतौर पर तब होता है जब एकत्रीकरण में एक गलतनाम या अनुचित फ़ाइल शामिल की जाती है, जिससे एक अनधिकृत समय आयाम होता है। इस समस्या को हल करने के लिए त्रुटि संदेश देखेंERDDAP™लॉग.txt फ़ाइल को ऑफेंडिंग टाइम वैल्यू खोजने के लिए। फिर संबंधित फ़ाइल खोजने के लिए स्रोत फ़ाइलों को देखें (पहले या एक के बाद) यह एकत्रीकरण में नहीं है।

EDDGridसेडैप कंकाल एक्सएमएल

    <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>

 

EDDGridFromEDDTable

EDDGridFromEDDTable आपको EDDTable सारणीबद्ध डेटासेट को एक में बदलने की अनुमति देता हैEDDGridग्रिड डेटासेट। याद रखें किERDDAP™डेटासेट को या तो व्यवहार करता हैग्रिड डेटासेट (उपवर्गEDDGrid) या सारणीबद्ध डेटासेट (EDDTable के उपवर्ग)

  • आम तौर पर, यदि आपके पास ग्रिड डेटा है, तो आप सिर्फ एक सेट अप करते हैंEDDGridसीधे डेटासेट। कभी-कभी यह संभव नहीं है, उदाहरण के लिए, जब आपके पास संबंधिक डेटाबेस में संग्रहीत डेटा होता हैERDDAP™केवल EDDTableFromDatabase के माध्यम से पहुँच सकते हैं।EDDGridFromEDDTable class आपको उस स्थिति का उपाय करने देता है।  
  • जाहिर है, अंतर्निहित EDDTable डेटासेट में डेटा होना चाहिए (मूल) ग्रिड डेटा, लेकिन एक सारणीबद्ध रूप में। उदाहरण के लिए, EDDTable डेटासेट में CTD डेटा हो सकता है: पूर्वी और उत्तर की ओर की माप, कई गहराईयों पर, कई बार। चूंकि गहराई प्रत्येक समय बिंदु पर समान है,EDDGridFromEDDTable एक समय और एक गहराई आयाम के साथ एक ग्रिड डेटासेट बना सकता है जो अंतर्निहित EDDTable डेटासेट के माध्यम से डेटा तक पहुंचता है।  
  • जनगणना Xml -- हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। आप उस जानकारी को इकट्ठा कर सकते हैं जिसे आपको किसी न किसी प्रारूप में सुधार करने की आवश्यकता है।  
  • स्रोत गुण -- अन्य सभी प्रकार के डेटासेट के साथ,EDDGridFromTable is विचार है कि वहाँ वैश्विक स्रोतAttributes हैं औरवैश्विकaddAttributes (में निर्दिष्टdatasets.xml) , जो वैश्विक संयुक्त बनाने के लिए संयुक्त हैं विशेषता, जो उपयोगकर्ता देखते हैं। वैश्विक स्रोत के लिएविशेषताएं,EDDGridFromEDDTable वैश्विक संयुक्त का उपयोग करता है अंतर्निहित EDDTable डेटासेट की विशेषता। (यदि आप इसके बारे में एक मिनट के लिए सोचते हैं तो यह समझ में आता है।)

इसी तरह, प्रत्येक के लिएaxisVariable'और'dataVariable'addAttributes,EDDGridFromEDDTable चर के संयुक्त का उपयोग करता है अंतर्निहित EDDTable डेटासेट से योगदान करता है क्योंकिEDDGridfromEDDTablevari's sourceAttributes. (यदि आप इसके बारे में एक मिनट के लिए सोचते हैं तो यह समझ में आता है।)

एक परिणाम के रूप में, अगर EDDTable अच्छा मेटाडाटा है,EDDGridFromEDDTable अक्सर बहुत कम जरूरतaddAttributesमेटाडाटा - यहाँ और वहाँ सिर्फ कुछ tweaks।

  • dataVariables बनामaxisVariableS -- अंतर्निहित EDDTable केवल हैdataVariableS. AnEDDGridFromEDDTable dataset कुछ होगाaxisVariables (EDDTabledataVariables) कुछdataVariables (शेष EDDTable से निर्मितdataVariables) ।जनरेट DatasetXmlयह अनुमान लगाया जाएगा कि ईडीडीटीबल किस प्रकार है?dataVariableहोना चाहिएEDDGridFromEDDTableaxisVariableलेकिन यह सिर्फ एक अनुमान है। आपको निर्दिष्ट करने के लिए GenerateDatasetsXml के आउटपुट को संशोधित करने की आवश्यकता हैdataVariables होगाaxisVariables, और किस क्रम में।  

  • धुरी -- अंतर्निहित EDDT के बारे में कुछ भी नहीं हैEDDGridFromEDDTable the संभावित मान of the संभव मानaxisVariableडेटासेट के ग्रिड संस्करण में एस, इसलिए आप प्रत्येक के लिए जानकारी प्रदान करते हैंaxisVariableइन विशेषताओं में से एक के माध्यम से:

    • धुरी - आपको मूल्यों की एक सूची निर्दिष्ट करने देता है। उदाहरण के लिए, <att name="axisValues"टाइप="डबललिस्ट"2, 2.5, 3, 3.5, 4</att> एक का उपयोग नोटडेटा प्रकारसाथ ही शब्द सूची। इसके अलावा, सूची का प्रकार (उदाहरण के लिए, डबल) MUST डेटा से मेल खाता है EDDTable में चर का प्रकार औरEDDGridfromEDDTable Datasets.
    • AxisValuesStartStrideStop - आपको स्टार्ट, स्ट्राइड और स्टॉप वैल्यू को निर्दिष्ट करके नियमित रूप से स्पेस मूल्यों का अनुक्रम निर्दिष्ट करने देता है। यहाँ एक उदाहरण है कि ऊपर धुरी उदाहरण के बराबर है: <att name="axisValuesStartStrideStop"टाइप="डबललिस्ट"2, 0.5, 4</att> फिर, एक सूची डेटा प्रकार का उपयोग नोट करें। इसके अलावा, सूची का प्रकार (उदाहरण के लिए, डबल) MUST डेटा से मेल खाता है EDDTable में चर का प्रकार औरEDDGridfromEDDTable Datasets.  

अपडेट जैसा कि कोई रास्ता नहीं हैEDDGridशुरू में EDDTable से अक्षवैल्यू निर्धारित करने के लिए FromDTable, इसके लिए कोई विश्वसनीय तरीका भी नहीं है।EDDGridEDDTable से निर्धारित करने के लिए जब अक्षवैल्यू बदल गया है (विशेष रूप से, जब समय चर के लिए नए मान होते हैं) । वर्तमान में, एकमात्र समाधान में अक्षवैल्यू विशेषता को बदलना हैdatasets.xmlऔर डेटासेट को फिर से लोड करें। उदाहरण के लिए, आप एक स्क्रिप्ट लिख सकते हैं

  1. खोजdatasets.xmlके लिए datasetID(a) Datasetid " इसलिए आप सही डेटासेट के साथ काम कर रहे हैं।
  2. खोजdatasets.xmlअगली घटना के लिए SourceName
    इसलिए आप सही चर के साथ काम कर रहे हैं।
  3. खोजdatasets.xmlअगली घटना के लिए
        <att name="axisValuesStartStrideStop" type="doubleList">  

इसलिए आप टैग की शुरुआत स्थिति जानते हैं। 4. खोजdatasets.xmlअगली घटना के लिए

        </att>  

इसलिए आप अक्ष मूल्यों की अंतिम स्थिति को जानते हैं। 5. पुराने शुरू को बदलें, नए मूल्यों के साथ मूल्यों को रोकें। 6. संपर्क करेंध्वज यूआरएलडाटासेट के लिए बताने के लिएERDDAP™डेटासेट को फिर से लोड करने के लिए।

यह आदर्श नहीं है, लेकिन यह काम करता है।  

  • परिशुद्धता - कबEDDGridFromEDDTable डेटा के लिए उपयोगकर्ता के अनुरोध का जवाब देता है, यह EDDTable प्रतिक्रिया तालिका से डेटा की एक पंक्ति को स्थानांतरित करता है।EDDGridप्रतिक्रिया ग्रिड। ऐसा करने के लिए, यह पता लगाना होगा कि तालिका में दी गई पंक्ति पर "अक्ष" मान ग्रिड में अक्ष मानों के कुछ संयोजन से मेल खाते हैं। पूर्णांक डेटा प्रकार के लिए, यह निर्धारित करना आसान है कि दो मान बराबर हैं। लेकिन फ्लोट और डबल्स के लिए, यह फ्लोटिंग पॉइंट नंबर की भयानक समस्या को बढ़ा देता हैबिल्कुल मिलान नहीं। (उदाहरण के लिए, 0.2 बनाम 0.199999999999999996) । करने के लिए (कोशिश करो) इससे निपटने के लिए,EDDGridFromTable आप किसी भी के लिए एक सटीक विशेषता निर्दिष्ट करने देता हैaxisVariableS, जो decimal अंकों की कुल संख्या को निर्दिष्ट करता है जो समान होना चाहिए।
    • उदाहरण के लिए,<att name="property" type="int">5</att>
    • विभिन्न प्रकार के डेटा चर के लिए, विभिन्न डिफ़ॉल्ट सटीक मान हैं। आमतौर पर डिफ़ॉल्ट उपयुक्त होते हैं। यदि वे नहीं हैं, तो आपको विभिन्न मूल्यों को निर्दिष्ट करने की आवश्यकता है।
    • के लिएaxisVariable(s)समय मुद्रा परिवर्तक, डिफ़ॉल्ट पूर्ण परिशुद्धता है (एक सटीक मैच) ।
    • के लिएaxisVariableजो फ्लोट हैं, डिफ़ॉल्ट परिशुद्धता 5 है।
    • के लिएaxisVariables कि डबल्स हैं, डिफ़ॉल्ट परिशुद्धता 9. है
    • के लिएaxisVariableजिनके पास डेटा प्रकार पूर्ण है,EDDGridFromEDDTable परिशुद्धता विशेषता को नजरअंदाज करता है और हमेशा पूर्ण परिशुद्धता का उपयोग करता है (एक सटीक मैच) ।  
    • चेतावनी! जब ग्रिड डेटा के एक हिस्से में सारणीबद्ध डेटा के एक हिस्से में रूपांतरण किया जाता है, अगरEDDGridFromEDDTable अपेक्षित में से एक के लिए EDDTable "axis" मान से मेल नहीं खा सकताEDDGridFromEDDTable अक्ष मान,EDDGridFromEDDTable चुपचाप (कोई त्रुटि नहीं) तालिका की उस पंक्ति से डेटा को फेंक देता है। उदाहरण के लिए, अन्य डेटा हो सकता है (ग्रिड पर नहीं) EDDTable Dataset में। (और अगर stride> 1, यह स्पष्ट नहीं हैEDDGridइससे पहले कि कौन-सा अक्ष मान वांछित मान हैं और कौन-सा व्यक्ति स्ट्राइड के कारण छोड़ दिया जाना है।) इसलिए, यदि सटीक मान बहुत अधिक हैं, तो उपयोगकर्ता डेटा प्रतिक्रिया में लापता मान देखेगा जब वैध डेटा मान वास्तव में मौजूद हैं।

इसके विपरीत, यदि सटीक मान बहुत कम होते हैं, तो EDDTable "axis" मान जो मिलान नहीं करना चाहिएEDDGridFromEDDTable अक्ष मान (erroneously) मैच।

ये संभावित समस्याएं भयानक हैं, क्योंकि उपयोगकर्ता गलत डेटा प्राप्त करता है (या लापता मान) जब उन्हें सही डेटा प्राप्त करना चाहिए (या कम से कम एक त्रुटि संदेश) । इसमें कोई दोष नहीं हैEDDGridFromTable.EDDGridइस समस्या को हल नहीं कर सकता। समस्या सारणीबद्ध डेटा में परिवर्तित होने में निहित है (जब तक अन्य मान्यताओं को बनाया जा सकता है, लेकिन उन्हें यहां नहीं बनाया जा सकता है) । यह आप तक है,ERDDAP™व्यवस्थापक अपना परीक्षणEDDGridFromEDDTable well यह सुनिश्चित करने के लिए कि इन संभावित समस्याओं से बचने के लिए सटीक मान निर्धारित किए गए हैं।

गैंगबैंग

  • गैंगबैंग-- यह डेटासेट का एक बहुत ही असामान्य प्रकार है। चूंकि उन प्रश्नों के प्रकार जिन्हें करने के लिए बनाया जा सकता है (द्वारा संभाला) एकEDDGridडेटासेट (श्रेणियों और सीमाओं से संबंधितaxisVariables) उन प्रश्नों के प्रकारों से बहुत अलग हैं जिन्हें बनाया जा सकता है (द्वारा संभाला) EDDTable Dataset (कुछ चरों की श्रेणियों से संबंधित) , का प्रदर्शनEDDGridFromEDDTable Datasets सटीक अनुरोध जो बनाया गया है और अंतर्निहित EDDTable Dataset की गति के आधार पर बहुत भिन्न होगा। उन अनुरोधों के लिए जिनके पास एक स्ट्राइड वैल्यू है > 1,EDDGridFromEDDTable डेटा के अपेक्षाकृत बड़े हिस्से के लिए अंतर्निहित EDDTable पूछ सकता है (अगर stride=1) और फिर परिणामों के माध्यम से सिफ्ट करें, डेटा को कुछ पंक्तियों से रखें और दूसरों से डेटा को फेंक दें। यदि आवश्यक डेटा प्राप्त करने के लिए बहुत सारे डेटा के माध्यम से इसे तोड़ना पड़ता है, तो अनुरोध को भरने के लिए लंबे समय तक ले जाएगा।

अगरEDDGridFromEDDTable यह बता सकता है कि बड़े अंतराल होंगे (अवांछित डेटा की पंक्तियों के साथ) वांछित डेटा वाली पंक्तियों के बीच,EDDGridFromEDDTable एक बड़े अनुरोध के बजाय अंतर्निहित EDDTable को कई सबरीक्शंस बनाने का विकल्प चुन सकता है, जिससे बड़े अंतराल में डेटा की अवांछित पंक्तियों को छोड़ दिया जा सकता है। इस निर्णय के लिए संवेदनशीलता को अंतराल द्वारा नियंत्रित किया जाता हैथ्रेसहोल्ड मान जैसा कि निर्दिष्ट में है<gapThreshold> टैग (डिफ़ॉल्ट = 1000 पंक्तियों के स्रोत डेटा) । एक छोटी संख्या के लिए थ्रेसहोल्ड करने से डेटासेट बनाने का नेतृत्व होगा (आम तौर पर) अधिक subrequests एक बड़ी संख्या में होने वाले अंतराल को सेट करने से डेटासेट बनाने का नेतृत्व होगा (आम तौर पर) कम उपनिवेश।

यदि अंतराल थ्रेसहोल्ड बहुत छोटा है,EDDGridFromEDDTable धीरे-धीरे काम करेगा क्योंकि कई अनुरोधों के ऊपर कुछ अतिरिक्त डेटा प्राप्त करके बचाया समय से अधिक होगा। अगर अंतर थ्रेसहोल्ड बहुत बड़ा है,EDDGridFromEDDTable धीरे-धीरे काम करेगा क्योंकि इतना अतिरिक्त डेटा EDDTable से लिया जाएगा, केवल खारिज किया जाएगा। (जैसा कि गोल्डीलॉक्स की खोज की गई थी, मध्य "सही" है।) विभिन्न प्रकार के EDDTable डेटासेट के लिए ओवरहेड बहुत भिन्न होता है, इसलिए आपके डेटासेट के लिए वास्तविक सर्वोत्तम सेटिंग जानने का एकमात्र तरीका प्रयोग के माध्यम से है। लेकिन आप डिफ़ॉल्ट के लिए बहुत गलत स्टिकिंग नहीं करेंगे।

एक साधारण उदाहरण है: कल्पना करोEDDGridकेवल एक के साथaxisVariable (समय, 100000 के आकार के साथ) एकdataVariable (तापमान) , और डिफ़ॉल्ट अंतराल1000 की थ्रेसहोल्ड।

  • यदि कोई उपयोगकर्ता तापमान का अनुरोध करता है\[0💯5000\], स्ट्राइड 100 है इसलिए अंतराल का आकार 99 है, जो कि खाई से भी कम है। तोEDDGridFromTable अनुरोध के लिए आवश्यक सभी डेटा के लिए EDDTable के लिए सिर्फ एक अनुरोध करेगा (तापमान के बराबर\[0:5000\]) और डेटा की सभी पंक्तियों को फेंकने की जरूरत नहीं है।
  • यदि कोई उपयोगकर्ता तापमान का अनुरोध करता है\[0:2500:5000\], यह तय 2500 है, इसलिए अंतराल का आकार 2499 है, जो अंतराल से अधिक हैथ्रेशोल्ड। तोEDDGridFromTable EDDTable के लिए अलग-अलग अनुरोध करेगा जो तापमान के बराबर हैं\[0\]तापमान\[2500\]तापमान\[5000\]।

जब एकाधिक अक्ष होते हैं तो अंतर आकार की गणना अधिक जटिल होती है।

प्रत्येक उपयोगकर्ता अनुरोध के लिए,EDDGridFromEDDTable prints डायग्नोस्टिक संदेशों में इस संबंध मेंलॉग-इनफ़ाइल

  • यदि<लॉग लेवल> (#loglevel) मेंdatasets.xmlजानकारी के लिए सेट किया गया है, इस तरह के एक संदेश प्रिंट \* nOuterAxes=1 of 4 nOuterRequest=22 यदि nOuterAxes=0, gapThreshold से अधिक नहीं था और केवल एक अनुरोध EDDTable को किया जाएगा। यदि nOuterAxes>0, gapThreshold से अधिक हो गया था और nOuterRequests EDDTable के लिए बनाया जाएगा, प्रत्येक अनुरोध के संयोजन के लिए बाएं सबसे nOuterAxes. उदाहरण के लिए, यदि डेटासेट में 4 हैaxisVariables औरdataVariableजैसे पूर्वी\[समय\]\[अक्षांश\]\[लंबाई\]\[गहराई\]सबसे बाएं (पहला) अक्ष चर समय है।
  • अगर<लॉग इन करें मेंdatasets.xmlसभी के लिए सेट किया गया है, अतिरिक्त जानकारी log.txt फ़ाइल में लिखी गई है।  

EDDGridFromEDDTable कंकाल एक्सएमएल

 <dataset type="EDDGridFromEDDTable" datasetID\="..." active\="..." >
    <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
    <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
    <accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
    <reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
    <updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
     For EDDGridFromEDDTable, this only works if the underlying EDDTable
     supports updateEveryNMillis. -->
    <gapThreshold>...</gapThreshold> <!-- 0 or 1. The default is 1000. >
    <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
    <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
    <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
    <iso19115File>...</iso19115File> <!-- 0 or 1 -->
    <onChange>...</onChange> <!-- 0 or more -->
    <addAttributes>...</addAttributes> <!-- 0 or 1 -->
    <axisVariable>...</axisVariable> <!-- 1 or more -->
    <dataVariable>...</dataVariable> <!-- 1 or more -->
    <dataset>...</dataset> <!-- The underlying source EDDTable dataset. -->
 </dataset>

EDD*FromERDDAP

EDDGridसेंध रिमोट से ग्रिड डेटा को संभालती हैERDDAP™सर्वर EDDTableFromErddap रिमोट से सारणीबद्ध डेटा को संभालती हैERDDAP™सर्वर

  • EDDGridFromErddap and EDDTableFromErddap अन्य सभी प्रकार के डेटासेट से अलग-अलग व्यवहार करते हैं।ERDDAP।
    • अन्य प्रकार के डेटासेट की तरह, ये डेटासेट स्रोत से डेटासेट के बारे में जानकारी प्राप्त करते हैं और इसे स्मृति में रखते हैं।
    • डेटासेट के अन्य प्रकारों की तरह, जबERDDAP™डेटासेट की खोज, डेटा एक्सेस फॉर्म प्रदर्शित करता है ( datasetID एचटीएमएल) मेक A Graph form ( datasetID ग्राफ़) ,ERDDAP™डेटासेट के बारे में जानकारी का उपयोग करता है जो स्मृति में है।
    • EDDGridFromErddap and EDDTable FromErddap के लिए आधार हैंग्रिड / क्लस्टर / फेडरेशनofERDDAPs, जो कुशलता से सीपीयू उपयोग वितरित (ज्यादातर नक्शा बनाने के लिए) एक बड़े डेटा सेंटर के मेमोरी उपयोग, डेटासेट भंडारण और बैंडविड्थ उपयोग।

रीडायरेक्ट

  • डेटासेट के अन्य प्रकारों के विपरीत, जबERDDAP™इन डेटासेट से डेटा या छवियों के लिए अनुरोध प्राप्त करता है,ERDDAP पुनर्निर्देशनरिमोट के लिए अनुरोधERDDAP™सर्वर परिणाम है:
    • यह बहुत कुशल है (सीपीयू, मेमोरी और बैंडविड्थ) अन्यथा
      1. समग्रERDDAP™अन्य को अनुरोध भेजनाERDDAP™ (जो समय लगता है) ।
      2. अन्यERDDAP™डेटा प्राप्त करना, इसे सुधारना और डेटा को समग्र में संचारित करना हैERDDAP।
      3. समग्रERDDAP™डेटा प्राप्त करना (बैंडविड्थ का उपयोग करना) इसे सुधारना (सीपीयू और मेमोरी का उपयोग करना) , और उपयोगकर्ता को डेटा संचारित (बैंडविड्थ का उपयोग करना) । अनुरोध को पुनर्निर्देशित करके और दूसरे को अनुमति देनाERDDAP™उपयोगकर्ता को सीधे प्रतिक्रिया भेजने के लिए, समग्रERDDAP™अनिवार्य रूप से अनुरोध पर सीपीयू समय, मेमोरी या बैंडविड्थ खर्च नहीं करता है।
    • ग्राहक सॉफ्टवेयर की परवाह किए बिना उपयोगकर्ता के लिए पुनर्निर्देशित है (ब्राउज़र या किसी अन्य सॉफ्टवेयर या कमांड लाइन टूल) ।
  • आप कह सकते हैंERDDAP™सेटिंग द्वारा किसी भी उपयोगकर्ता अनुरोध को पुनर्निर्देशित न करें<Redirect>false</redirect>, लेकिन यह बहुत सारे फायदे की उपेक्षा करता है ...FromErddap डेटासेट प्रकार (विशेष रूप से, लोड को सामने के छोर पर फैलानाERDDAP™दूरस्थ / बैकेंड के लिएERDDAP) ।    

सदस्यता

आम तौर पर, जबEDDGridFromErddap and EDDTable सेंधप हैं (फिर) आपका स्वागत हैERDDAPवे दूरस्थ डेटासेट के लिए एक सदस्यता जोड़ने की कोशिश करते हैंERDDAPईमेल / यूआरएल सदस्यता प्रणाली इस तरह, जब भी दूरस्थ डेटासेट बदलता है, रिमोटERDDAP™संपर्कसेट ध्वज यूआरएलअपनेERDDAP™इसलिए कि स्थानीय डेटासेट को ASAP रीलोड किया गया है और इसलिए कि स्थानीय डेटासेट हमेशा पूरी तरह से अप-टू-डेट है और दूरस्थ डेटासेट की नकल करता है। तो, पहली बार ऐसा होता है, आपको एक ईमेल अनुरोध करना चाहिए कि आप सदस्यता को मान्य करें। हालांकि, अगर स्थानीयERDDAP™कोई ईमेल नहीं भेज सकता है या अगर रिमोटERDDAP'ई-मेल/URL सदस्यता प्रणाली सक्रिय नहीं है, आपको दूरस्थ ईमेल करना चाहिएERDDAP™प्रशासक और अनुरोध है कि वह मैन्युअल रूप से जोड़ती है [<OnChange> (#onchange) ......</onChange> अपने डेटासेट को कॉल करने के लिए प्रासंगिक डेटासेट के सभी के लिए टैगसेट ध्वज यूआरएल। देखेंERDDAP™सेटडाटासेट की सूची के लिए दैनिक रिपोर्ट ध्वज यूआरएल, लेकिन सिर्फ उन लोगों को भेजने के लिएEDDGridFromErddap and EDDTableFromErddap datasets to the RemoteERDDAP™व्यवस्थापक।

क्या यह काम नहीं कर रहा है? क्या आपके स्थानीय डेटासेट दूरस्थ डेटासेट के साथ सिंक में नहीं रह रहे हैं? कई चीजों को इस प्रणाली के लिए सही ढंग से काम करना चाहिए ताकि आपका डाटा सेट अप-टू-डेट बने। इन सभी चीजों को क्रम में देखें:

  1. आपकाERDDAP™ईमेल भेजने में सक्षम होना चाहिए। अपने सेटअप.xml में ईमेल सेटिंग देखें।
  2. सामान्य (लेकिन हमेशा नहीं) , आपकाERDDAP'<BaseUrl> और<BaseHttpsUrl> में पोर्ट नंबर नहीं होना चाहिए (उदाहरण के लिए:8080, :8443) । यदि वे करते हैं, तो इसका उपयोग करेंप्रॉक्सीपासबंदरगाह को Url से निकालने के लिए।
  3. अपने सेटअप.xml में,<सदस्यता ToRemoteErddapDataset> को सही करने के लिए सेट किया जाना चाहिए।
  4. जब आपका स्थानीय EDD ... fromErddap dataset को फिर से लोड किया गया है, इसे रिमोट के लिए एक अनुरोध भेजना चाहिएERDDAP™दूरस्थ डेटासेट की सदस्यता के लिए। Log.txt में यह देखने के लिए कि यह क्या हो रहा है।
  5. आपको एक ईमेल प्राप्त करना चाहिए जो आपको सदस्यता अनुरोध को मान्य करने के लिए कहता है।
  6. सदस्यता अनुरोध को मान्य करने के लिए आपको उस ईमेल में लिंक पर क्लिक करना होगा।
  7. दूरस्थERDDAP™यह कहना चाहिए कि सत्यापन सफल रहा। किसी भी समय, आप दूरस्थ से एक ईमेल का अनुरोध कर सकते हैंERDDAP™अपने लंबित और वैध सदस्यता की एक सूची के साथ। पर फॉर्म देखें दूरदर्शन Url /erddap/subscriptions/list.html
  8. जब दूरस्थ डेटासेट में परिवर्तन होता है (उदाहरण के लिए, अतिरिक्त डेटा प्राप्त करता है) दूरस्थERDDAP™अपने झंडे से संपर्क करने की कोशिश करनी चाहिएERDDAP। आप इसे नहीं देख सकते, लेकिन आप दूरस्थ के व्यवस्थापक से पूछ सकते हैंERDDAP™यह जाँच करने के लिए।
  9. आपकाERDDAP™उस झंडे को सेट करने के लिए अनुरोध प्राप्त करना चाहिए। "setDatasetFlag.txt" के लिए अपने log.txt को देखें (s) और देखें कि अनुरोधों से जुड़े त्रुटि संदेश क्या है।
  10. आपकाERDDAP™फिर उस डेटासेट को फिर से लोड करने की कोशिश करनी चाहिए (शायद तुरंत नहीं, बल्कि ASAP) ।  

अप करने के लिए तारीख अधिकतम (समय) ?

EDDGrid/TableFromErddap डेटासेट केवल स्रोत डेटासेट होने पर प्रत्येक स्रोत डेटासेट के बारे में उनकी संग्रहीत जानकारी बदलता है।"reload"edमेटाडाटा परिवर्तन का कुछ टुकड़ा (उदाहरण के लिए, समय चरactual\_range) जिससे सदस्यता अधिसूचना उत्पन्न होती है। यदि स्रोत डेटासेट में डेटा होता है जो अक्सर बदलता है (उदाहरण के लिए, प्रत्येक सेकंड में नया डेटा) और उपयोग"update"अंतर्निहित डेटा में लगातार परिवर्तन को नोटिस करने के लिए सिस्टम,EDDGrid/TableFromErddap अगले डेटासेट "रीलोड" तक इन लगातार परिवर्तनों के बारे में सूचित नहीं किया जाएगा, इसलिएEDDGrid/TableFromErddap पूरी तरह से अद्यतन नहीं होगा। आप स्रोत डेटासेट के बदलकर इस समस्या को कम कर सकते हैं<ReloadEveryNMinutes> एक छोटे से मूल्य के लिए (60?) इतना है कि वहाँ अधिक सदस्यता अधिसूचनाओं को बताने के लिए कर रहे हैंEDDGrid/TableFromErddap स्रोत डेटासेट के बारे में अपनी जानकारी अद्यतन करने के लिए।

यदि आपके डेटा प्रबंधन प्रणाली को पता चलता है कि स्रोत डेटासेट में नया डेटा है (उदाहरण के लिए, एक स्क्रिप्ट के माध्यम से जो एक डेटा फ़ाइल को जगह में कॉपी करता है) , और अगर वह सुपर लगातार नहीं है (उदाहरण के लिए, हर 5 मिनट, या कम लगातार) एक बेहतर समाधान है:

  1. उपयोग न करें<अद्यतन EveryNMillis> स्रोत डेटासेट अप-टू-डेट रखने के लिए।
  2. स्रोत डेटासेट सेट करें<ReloadEveryNMinutes> एक बड़ी संख्या में (1440?) ।
  3. स्क्रिप्ट स्रोत डेटासेट से संपर्क करेंध्वज यूआरएलइसके ठीक बाद एक नई डेटा फ़ाइल को जगह में कॉपी किया जाता है।  

इससे स्रोत डेटासेट पूरी तरह से अप-टू-डेट होने का कारण बनता है और इसे सदस्यता अधिसूचना उत्पन्न करने का कारण बनता है, जिसे भेजा जाएगा।EDDGrid/TableFromErddap डेटासेट। यही कारण है कि नेतृत्व करेंगेEDDGrid/TableFromErddap डेटासेट पूरी तरह से अद्यतन करने के लिए (अच्छी तरह से, नए डेटा के 5 सेकंड के भीतर जोड़ा जा रहा है) । वह सब जो कुशलतापूर्वक किया जाएगा (अनावश्यक डेटासेट रीलोड के बिना) ।  

नहींaddAttributes,axisVariableयाdataVariable

डेटासेट के अन्य प्रकारों के विपरीत, EDDTableFromErddap औरEDDGridFromErddap डेटासेट वैश्विक अनुमति नहीं देते<addAttributes>,<axisVariableऔर Gt; या<dataVariable> अनुभागों मेंdatasets.xmlउस डेटासेट के लिए। समस्या यह है कि उन लोगों की अनुमति देने से असंगति होगी:

  1. आइए कहते हैं कि यह अनुमति दी गई थी और आपने एक नया वैश्विक विशेषता जोड़ा।
  2. जब कोई उपयोगकर्ता आपसे पूछता हैERDDAP™वैश्विक विशेषताओं के लिए, नई विशेषता दिखाई देगी।
  3. लेकिन जब कोई उपयोगकर्ता आपसे पूछता हैERDDAP™एक डेटा फ़ाइल के लिए, आपकाERDDAP™स्रोत के अनुरोध को पुनर्निर्देशित करता हैERDDAP। किERDDAP™नई विशेषता से अनजान है। तो अगर यह मेटाडाटा के साथ एक डेटा फ़ाइल बनाता है, उदाहरण के लिए, एक.ncफ़ाइल, मेटाडाटा में नई विशेषता नहीं होगी।

वहाँ दो काम के आसपास हैं:

  1. स्रोत के व्यवस्थापक ConvinceERDDAP™उन परिवर्तनों को बनाने के लिए जो आप मेटाडाटा चाहते हैं।
  2. EDDTableFromErddap के बजाय, उपयोगEDDTableFromDapSequence। या इसके बजायEDDGridFromErddap, useEDDGridFromDap। उन EDD प्रकार आपको दूरस्थ रूप से डेटासेट से कनेक्ट करने की अनुमति देते हैंERDDAP™ (लेकिन डेटा अनुरोधों को पुनर्निर्देशित किए बिना) और वे आपको वैश्विक रूप से शामिल करने की अनुमति देते हैं<addAttributes>,<axisVariableऔर Gt; या<dataVariable> अनुभागों मेंdatasets.xml। एक अन्य अंतर: आपको मैन्युअल रूप से दूरस्थ डेटासेट को सब्सक्राइब करने की आवश्यकता होगी ताकि आपके डेटासेट पर डेटासेट हो सकेERDDAP™अधिसूचित किया जाएगा (के माध्यम सेध्वज यूआरएल) जब दूरस्थ डेटासेट में परिवर्तन होते हैं। इस प्रकार, आप दूरस्थ डेटासेट से जुड़ने के बजाय एक नया डेटासेट बना रहे हैं।  

अन्य नोट्स

  • सुरक्षा कारणों के लिएEDDGridFromErddap and EDDTable FromErddap don't support the [[]]<सुलभ (#accessibleto) टैग और दूरस्थ डेटासेट के साथ इस्तेमाल नहीं किया जा सकता है जिसके लिए लॉग इन करना होता है (क्योंकि वे उपयोग करते हैं [<सुलभ (#accessibleto) .. देखेंERDDAP'सुरक्षा प्रणालीकुछ उपयोगकर्ताओं को कुछ डेटासेट तक पहुंच को प्रतिबंधित करने के लिए।  
  • शुरूERDDAP™v2.10,EDDGridFromErddap and EDDTableFromErddap समर्थन [erddap]<सुलभ ViaFiles> (#accessibleviafiles) टैग अन्य प्रकार के डेटासेट के विपरीत, डिफ़ॉल्ट सही है, लेकिन डेटासेट की फाइलें केवल तभी सुलभ होंगी जब स्रोत डेटासेट भी हो<सुलभ ViaFiles> सही करने के लिए सेट।  
  • आप उपयोग कर सकते हैंजनगणना Xml कार्यक्रमबनाने के लिएdatasets.xmlइस प्रकार के डेटासेट के लिए भाग लें। लेकिन आप इन प्रकार के डेटासेट को आसानी से हाथ से कर सकते हैं।  

EDDGridएर्डडाप कंकाल से एक्सएमएल

  • EDDGridएर्डडाप कंकाल से XML डेटासेट बहुत सरल है, क्योंकि इरादा सिर्फ दूरस्थ डेटासेट की नकल करना है जो पहले से ही उपयोग के लिए उपयुक्त है।ERDDAP:

  <dataset type="EDDGridFromErddap" datasetID\="..." active\="..." >
      <sourceUrl>...</sourceUrl>
      <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
      <accessibleViaFiles>...</accessibleViaFiles> <!-- 0 or 1, default=true. -->
      <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
      <reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
      <updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1
        For EDDGridFromErddap, this gets the remote .dds and then gets
        the new leftmost (first) dimension values. -->
      <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
      <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
      <nThreads>...</nThreads> <!-- 0 or 1 -->
      <dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
      <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
      <iso19115File>...</iso19115File> <!-- 0 or 1 -->
      <onChange>...</onChange> <!-- 0 or more -->
      <redirect>true(default)|false</redirect> <!-- 0 or 1; -->
  </dataset>

EDDTableFromErddap कंकाल एक्सएमएल

  • एक EDDTableFromErddap Dataset के लिए कंकाल XML बहुत सरल है, क्योंकि इरादा दूरस्थ डेटासेट की नकल करना है, जो पहले से ही उपयोग के लिए उपयुक्त है।ERDDAP:

  <dataset type="EDDTableFromErddap" datasetID\="..." active\="..." >
      <sourceUrl>...</sourceUrl>
      <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
      <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
      <reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
      <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
      <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
      <addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
      <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
      <iso19115File>...</iso19115File> <!-- 0 or 1 -->
      <onChange>...</onChange> <!-- 0 or more -->
      <redirect>true(default)|false</redirect> <!-- 0 or 1; -->
  </dataset>

EDDGridEtopo

EDDGridEtopo बस सेवाETOPO1 ग्लोबल 1-मिन्यूट ग्रिड्ड एलिवेशन डेटा सेट (बर्फ की सतह, ग्रिड पंजीकृत, द्विआधारी, 2byte int: etopo1\_ice\_g\_i2.zip) जिसे वितरित किया जाता हैERDDAP।

  • केवल दोdatasetIDएस के लिए समर्थित हैंEDDGridFromEtopo, ताकि आप डेटा को अक्षांश मान -180 से 180, या अक्षांश मान 0 से 360 तक एक्सेस कर सकें।
  • कभी भी कोई उप टैग नहीं हैं, क्योंकि डेटा पहले से ही भीतर वर्णित हैERDDAP।
  • तो दो विकल्पEDDGridFromEtopo डाटासेट हैं (सचमुच) :
      <!-- etopo180 serves the data from longitude -180 to 180 -->
<dataset type="EDDGridFromEtopo" datasetID="etopo180" />
<!-- etopo360 serves the data from longitude 0 to 360 -->
<dataset type="EDDGridFromEtopo" datasetID="etopo360" />

EDDGridसेफिल

EDDGridसेफिल सभी का सुपरक्लास हैEDDGrid...फिल्म कक्षाओं से। आप उपयोग नहीं कर सकतेEDDGridसीधे फिल्स से। इसके बजाय, एक उपश्रेणी का उपयोग करेंEDDGridFromFiles विशिष्ट फ़ाइल प्रकार को संभालने के लिए:

  • EDDGridFromMergeIRFilesग्रिड से डेटा संभालती हैमर्जी.gzफ़ाइलें
  • EDDGridAudioFilesस्थानीय ऑडियो फ़ाइलों के एक समूह से डेटा एकत्र करता है।
  • EDDGridFromNcFilesग्रिड से डेटा संभालती हैGRIB .grbफ़ाइलें,HDF (v4 or v5) .hdfफ़ाइलें,.ncएमएलफ़ाइलें, औरNetCDF (v3) .ncफ़ाइलें यह अन्य फ़ाइल प्रकारों के साथ काम कर सकता है (उदाहरण के लिए, BUFR) यदि आप रुचि रखते हैं तो कृपया हमें कुछ नमूना फ़ाइलों को भेजें।
  • EDDGridसे NcFilesUnpackedका एक प्रकार हैEDDGridसे NcFiles जो ग्रिड से डेटा को संभालती हैNetCDF (v3) .ncऔर संबंधित फाइलें, जोERDDAP™कम स्तर पर अनपैक।

वर्तमान में, कोई अन्य फ़ाइल प्रकार समर्थित नहीं है। लेकिन यह आमतौर पर अन्य फ़ाइल प्रकारों के लिए समर्थन जोड़ने के लिए अपेक्षाकृत आसान है। यदि आपके पास अनुरोध है तो हमसे संपर्क करें। यदि आपका डेटा पुराने फ़ाइल प्रारूप में है तो आप दूर जाना चाहते हैं, तो हम अनुशंसा करते हैं कि फ़ाइलों को परिवर्तित करने के लिए फ़ाइलों को परिवर्तित करें।NetCDFv3.ncफ़ाइलेंNetCDFएक व्यापक रूप से समर्थित, द्विआधारी प्रारूप है, डेटा तक तेजी से यादृच्छिक पहुंच की अनुमति देता है, और पहले से ही समर्थित हैERDDAP।

फाइल विवरण से

निम्नलिखित जानकारी सब वर्गों के लिए लागू होती हैEDDGridसेफाइल्स

मौजूदा आयाम का एकत्रीकरण

के सभी रूपोंEDDGridFromFiles स्थानीय फ़ाइलों से डेटा एकत्र कर सकते हैं, जहां प्रत्येक फ़ाइल में 1 है (या अधिक) बायीं ओर विभिन्न मूल्यों (पहला) आयाम, आमतौर पर\[समय\], जो समुचित हो जाएगा। उदाहरण के लिए, आयाम हो सकता है\[समय\]\[ऊंचाई\]\[अक्षांश\]\[लंबाई\], और फ़ाइलों को एक के लिए डेटा हो सकता है (कुछ) समय मूल्य (s) प्रति फ़ाइल परिणामस्वरूप डेटासेट दिखाई देता है जैसे कि फ़ाइल के सभी डेटा को जोड़ा गया था। एकत्रीकरण के बड़े फायदे हैं:

  • समुचित डेटा सेट का आकार एक फ़ाइल की तुलना में बहुत बड़ा हो सकता है, आसानी से किया जा सकता है (~2GB) ।
  • निकट-वास्तविक समय डेटा के लिए, डेटा के नवीनतम हिस्से के साथ एक नई फ़ाइल जोड़ना आसान है। आपको पूरे डेटासेट को फिर से लिखना नहीं है।

एकत्रीकरण की आवश्यकताएं हैं:

  • स्थानीय फ़ाइलों की आवश्यकता नहीं हैdataVariables (डेटासेट में परिभाषित के रूप मेंdatasets.xml) । डेटासेट होगाdataVariableमें परिभाषितdatasets.xml। यदि किसी दिए गए फ़ाइल में कोई दी गई फ़ाइल नहीं होती हैdataVariable,ERDDAP™आवश्यकतानुसार लापता मूल्यों को जोड़ देगा।
  • सभीdataVariableMUST उसी का उपयोग करता हैaxisVariableS/dimension (डेटासेट में परिभाषित के रूप मेंdatasets.xml) । पहले के आधार पर फ़ाइलों को एकत्र किया जाएगा (सबसे ज्यादा) आयाम, आरोही क्रम में क्रमबद्ध।
  • प्रत्येक फ़ाइल MAY में पहले आयाम के एक या अधिक मूल्यों के लिए डेटा होता है, लेकिन फ़ाइलों के बीच कोई ओवरलैप नहीं हो सकता है। यदि फ़ाइल में पहले आयाम के लिए एक से अधिक मान हैं, तो मान MUST को आरोही क्रम में क्रमबद्ध किया जाएगा, जिसमें कोई संबंध नहीं है।
  • सभी फाइलें MUST में अन्य सभी आयामों के लिए बिल्कुल समान मान हैं। परीक्षण की परिशुद्धता द्वारा निर्धारित की जाती हैमैच AxisNDigits
  • सभी फाइलें MUST बिल्कुल समान हैंयूनिटसभी के लिए मेटाडाटाaxisVariables औरdataVariableS. यदि यह एक समस्या है, तो आप उपयोग करने में सक्षम हो सकते हैंएनसीएमएलयाNCOसमस्या को ठीक करने के लिए।  
फ़ाइल नाम या वैश्विक मेटाडाटा के माध्यम से एकत्रीकरण

के सभी रूपोंEDDGridFromFiles एक नए बाएं सबसे अधिक जोड़कर फ़ाइलों का एक समूह भी एकत्र कर सकता है (पहला) आयाम, आम तौर पर समय, प्रत्येक फ़ाइल नाम से या प्रत्येक फ़ाइल में है कि एक वैश्विक विशेषता के मूल्य से व्युत्पन्न मूल्य के आधार पर। उदाहरण के लिए, फ़ाइल नाम में फ़ाइल में डेटा के लिए समय मान शामिल हो सकता है।ERDDAP™फिर एक नया समय आयाम बना देगा।

THREDDS में समान विशेषता के विपरीत,ERDDAP™हमेशा बनानाaxisVariableसंख्यात्मक मूल्यों के साथ (सीएफ द्वारा आवश्यकतानुसार) कभी स्ट्रिंग मूल्य नहीं (जो CF द्वारा अनुमति नहीं है) । इसके अलावा,ERDDAP™संख्यात्मक आधार पर एकत्रीकरण में फ़ाइलों को सॉर्ट करेगाaxisVariableमान जो प्रत्येक फ़ाइल को सौंपा गया है, ताकि अक्ष चर हमेशा सीएफ द्वारा आवश्यक मानों को सॉर्ट किया जाएगा। फ़ाइल नामों के आधार पर एक lexicographic प्रकार करने का THREDDS दृष्टिकोण एकत्रीकरण की ओर जाता है जहां अक्ष मूल्यों को सॉर्ट नहीं किया जाता है। (जो CF द्वारा अनुमति नहीं है) जब फ़ाइल नाम अलग तरह से व्युत्पन्न की तुलना मेंaxisVariableमान

इन संकलनों में से एक को स्थापित करने के लिएERDDAP™, आप एक नया leftmost परिभाषित करेंगे (पहला) axisVariableविशेष, छद्म के साथ<sourceName>, जो कहता हैERDDAP™जहां और कैसे प्रत्येक फ़ाइल से नए आयाम के लिए मूल्य खोजने के लिए।

  • छद्म के लिए प्रारूपsourceNameजो एक फ़ाइल नाम से मूल्य प्राप्त करता है (बस filename.ext) है \\\ फ़ाइल नाम डेटा प्रकार , अर्क , समूह संख्या*
  • छद्म के लिए प्रारूपsourceNameजो एक फ़ाइल के पूर्ण पथ नाम से मान प्राप्त करता है \\\ पथनाम डेटा प्रकार , अर्क , समूह संख्या* \[इसके लिए, पथ का नाम हमेशा उपयोग करता है'/'निर्देशिका विभाजक चरित्र के रूप में, कभी नहीं ''।\]
  • छद्म के लिए प्रारूपsourceNameजो वैश्विक विशेषता से मूल्य प्राप्त होता है \\\ वैश्विक: विशेषता नाम , डेटा प्रकार , अर्क , समूह संख्या*
  • यह छद्मsourceNameविकल्प दूसरों से अलग तरीके से काम करता है: इसके बजाय एक नया बाएं (पहला) axisVariableयह वर्तमान के मूल्य को बदल देता हैaxisVariableफ़ाइल नाम से निकाले गए मूल्य के साथ (बस filename.ext) । प्रारूप है \\\ बदलना फ़ाइलनाम से, डेटा प्रकार , अर्क , समूह संख्या*  

जिन हिस्सों को आप प्रदान करना चाहते हैं, उनके विवरण हैं:

  • विशेषता नाम -- वैश्विक विशेषता का नाम जो प्रत्येक फ़ाइल में है और जिसमें आयाम मान होता है।
  • डेटा प्रकार -- यह डेटा प्रकार निर्दिष्ट करता है जिसका उपयोग मूल्यों को स्टोर करने के लिए किया जाएगा। की मानक सूची देखेंडेटा प्रकारकिERDDAP™समर्थन करता है, सिवाय उस स्ट्रिंग को यहां अक्ष चर के बाद से अनुमति नहीं हैERDDAP™स्ट्रिंग चर नहीं हो सकता है।

एक अतिरिक्त छद्म डेटाटाइप, टाइमफॉर्मैट = है स्ट्रिंग टाइमफॉर्मैट कौन कहता हैERDDAP™यह मान एक स्ट्रिंग टाइमस्टैम्प हैस्ट्रिंग समय के लिए उपयुक्त इकाइयों। अधिकांश मामलों में, आपको आवश्यक स्ट्रिंगटाइमफॉर्मैट इन प्रारूपों में से एक का एक रूप होगा:

  • yyyy-MM-dd'T'H:mm:ss.SSSZ - जो ISO 8601:2004 (E) तारीख समय प्रारूप। आपको इसका एक छोटा संस्करण की आवश्यकता हो सकती है, उदाहरण के लिए,yyyy-MM-dd'T'H:mm:s, oryyyy-MM-dd।
  • YyymmddHmms.SSS - जो ISO 8601 तारीख समय प्रारूप का कॉम्पैक्ट संस्करण है। आपको इसका एक छोटा संस्करण, उदाहरण के लिए, yyyymmddHmms या yyyymmdd की आवश्यकता हो सकती है।
  • M/d/yyyyy एच: मिमी: एसएसएसएस - जो यूएस स्लैश डेट प्रारूप है। आपको इसका एक छोटा संस्करण की आवश्यकता हो सकती है, उदाहरण के लिए, M/d/yyyyy.
  • yyydddhmmsssSS - जो वर्ष और वर्ष के शून्य गद्देदार दिन है (उदाहरण के लिए, 001 = जनवरी 1, 365 = दिसंबर 31 एक गैर-लीप वर्ष में; कभी-कभी इसे कभी-कभी जूलियन तारीख कहा जाता है।) । आपको इसका एक छोटा संस्करण की आवश्यकता हो सकती है, उदाहरण के लिए, yyyddd।

यदि आप इस छद्म डेटाटाइप का उपयोग करते हैं, तो इसे नए परिवर्तनीय के रूप में जोड़ें<addAttributes>:

        <att name="units">seconds since 1970-01-01T00:00:00Z</att>  

यदि आप सभी समय मूल्यों को बदलना चाहते हैं, तो इकाइयों में समय मान को स्थानांतरित करें, उदाहरण के लिए, 1970-01-01T12:00:00Z.

  • अर्क -- यह हैनियमित अभिव्यक्ति (ट्यूटोरियल) जिसमें एक कैप्चर समूह शामिल है (माता-पिता में) जो वर्णन करता है कि कैसे फ़ाइल नाम या वैश्विक विशेषता मान से मूल्य निकालने के लिए। उदाहरण के लिए, S19980011998031.L3b\_MO\_CHL की तरह एक फ़ाइल नाम दिया गया।.nc, समूह #1 कब्जा, ""\dट्यूटोरियल", नियमित अभिव्यक्ति एस में (\dट्यूटोरियल) \dट्यूटोरियल\.L3b.\* 'S': 1998001 के बाद पहले 7 अंकों को कैप्चर करेगा।
  • समूह -- यह कैप्चर समूह की संख्या है (माता-पिता की एक जोड़ी के भीतर) नियमित अभिव्यक्ति में जिसमें रुचि की जानकारी होती है। यह आम तौर पर 1, पहला कैप्चर समूह है। कभी-कभी आपको रेगेक्स में अन्य प्रयोजनों के लिए कैप्चर समूहों का उपयोग करने की आवश्यकता होती है, इसलिए तब महत्वपूर्ण कैप्चर समूह संख्या 2 होगी। (दूसरा कैप्चर समूह) या 3 (तीसरा) आदि

एक पूर्ण उदाहरणaxisVariableजो एक नए समय अक्ष के साथ एक समेकित डेटासेट बनाता है जो प्रत्येक फ़ाइल के फ़ाइल नाम से समय मान प्राप्त करता है।

      <axisVariable>
<sourceName>\\*\\*\\*fileName,timeFormat=yyyyDDD,S(\\d{7})\\.L3m.\\*,1</sourceName>
<destinationName>time</destinationName>
</axisVariable>

जब आप "timeFormat=" छद्म डेटा का उपयोग करते हैं प्रकार,ERDDAP™2 विशेषताओं को जोड़ देगाaxisVariableइसलिए वे स्रोत से आने लगते हैं:

    <att name="standard\\_name">time</att>  
<att name="units">seconds since 1970-01-01T00:00:00Z</att>

इस मामले में,ERDDAP™एक नया अक्ष बनाया जाएगा"time"दोहरे मूल्यों के साथ (1970-01-01T00:00:00Z) 'S' के बाद 7 अंकों को निकालकर और फ़ाइल नाम में ".L3m" से पहले और उन लोगों की व्याख्या करते हुए जिन्हें समय मान के रूप में YyyyDDD के रूप में स्वरूपित किया गया था।

आप डिफ़ॉल्ट आधार समय को ओवरराइड कर सकते हैं (1970-01-01T00:00:00Z) जोड़करAttributeजो अलग-अलग इकाइयों को अलग-अलग आधार समय के साथ निर्दिष्ट करता है। एक आम स्थिति है: वहाँ डेटा फ़ाइलों के समूह हैं, प्रत्येक एक उपग्रह डाटासेट के 1 दिन मिश्रित के साथ, जहां आप चाहते हैं कि समय मान के लिए दोपहर का दिन फ़ाइल नाम में उल्लेख किया है (प्रत्येक दिन केन्द्रित समय) और वेरिएबल चाहते हैंlong\_name"Centered Time" होना चाहिए। यह कौन है:

      <axisVariable>
<sourceName>\\*\\*\\*fileName,timeFormat=yyyyDDD,S(\\d{7})\\.L3m.\\*,1</sourceName>
<destinationName>time</destinationName>
<addAttributes>
<att name="long\\_name">Centered Time</att>
<att name="units">seconds since 1970-01-01T12:00:00Z</att>
</addAttributes>
</axisVariable>

आधार समय में नोट घंटे = 12, जो 1970-01-01T00:00Z के मूल आधार समय के सापेक्ष 12 घंटे जोड़ता है।

एक पूर्ण उदाहरणaxisVariableजो एक नए "रन" अक्ष के साथ एक समेकित डेटासेट बनाता है (Int मान के साथ) जो प्रत्येक फ़ाइल में "runID" वैश्विक विशेषता से रन मान प्राप्त करता है ("r17\_global" जैसे मूल्यों के साथ, जहां 17 रन नंबर है) है

      <axisVariable> 
<sourceName>\\*\\*\\*global:runID,int,(r|s)(\\d+)\\_global,2</sourceName>
<destinationName>run</destinationName>
<addAttributes>
<att name="ioos\\_category">Other</att>
<att name="units">count</att>
</addAttributes>
</axisVariable>

'r' या 's' के बाद होने वाले अंकों को पकड़ने के लिए कैप्चर समूह संख्या 2 का उपयोग नोट करें, और "\_global" से पहले। यह उदाहरण यह भी दिखाता है कि अतिरिक्त विशेषताओं को कैसे जोड़ा जाए (उदाहरण के लिएioos\_categoryइकाई) अक्ष चर के लिए।  

बाह्य रूप से संपीड़ित फ़ाइलें

  • डेटासेट जो कि सबसेट हैंEDDGridFromFiles and EDDTable FromFiles बाह्य रूप से संपीड़ित डेटा फ़ाइलों से सीधे डेटा की सेवा कर सकते हैं, जिनमें शामिल हैं.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2, और .Z फ़ाइलें।  

  • यह आश्चर्यजनक रूप से अच्छी तरह से काम करता है!
    ज्यादातर मामलों में, छोटी और मध्यम आकार की डेटा फ़ाइलों को डिकंप्रेस करने से संबंधित मंदी मामूली है। यदि आपको डिस्क स्पेस को संरक्षित करने की आवश्यकता है, तो हम इस सुविधा का उपयोग करने के लिए दृढ़ता से प्रोत्साहित करते हैं, विशेष रूप से पुरानी फ़ाइलों के लिए जो शायद ही कभी एक्सेस किए जाते हैं।  

  • पैसे बचाओ!
    इसमें कुछ विशेषताएं हैंERDDAP™जो आपको बहुत सारे पैसे बचाने का मौका देता है (हालांकि थोड़ा कम प्रदर्शन की लागत पर) । यदि संपीड़न अनुपात उदाहरण है, तो 6:1 (कभी कभी यह बहुत अधिक होगा) फिर डेटासेट की डेटा फ़ाइलों को केवल 1/6 डिस्क स्पेस की आवश्यकता होगी। फिर शायद आप 1 RAID के साथ मिल सकते हैं (किसी दिए गए आकार का) 6 RAIDS के बजाय (समान आकार) । यह एक विशाल लागत बचत है। उम्मीद है कि एक संग्रह में कुछ फ़ाइलों को संपीड़ित करने की क्षमता (पुराने लोग?) और दूसरों को संपीड़ित नहीं करना (नए लोग?) , और किसी भी समय इसे बदलने के लिए, चलो आप फ़ाइलों में से कुछ को कंप्रेस करने के लिए डाउनसाइड को कम करते हैं (धीमी पहुँच) । यदि विकल्प टेप पर फ़ाइलों को संग्रहीत करने के बीच है (केवल अनुरोध पर सुलभ, देरी के बाद) उन्हें एक RAID पर संकुचित भंडारण बनाम (और सुलभERDDAP) , फिर संपीड़न का उपयोग करने का एक बड़ा लाभ है ताकि उपयोगकर्ता इंटरैक्टिव हो सकें और (अपेक्षाकृत) डेटा तक त्वरित पहुंच। अगर यह आपको अतिरिक्त RAID खरीदने से बचा सकता है, तो यह सुविधा आपको $30,000 डॉलर बचा सकती है।  

  • सभी के लिएEDDGridFromFiles subclasses, यदि डेटा फ़ाइलों का विस्तार होता है तो यह दर्शाता है कि वे बाहरी रूप से संपीड़ित फाइलें हैं। (वर्तमान में:.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2A.Z.) ,ERDDAP™जब यह उन्हें पढ़ता है तो डेटासेट की कैश डायरेक्टरी को फ़ाइलों को डिकंप्रेस करेगा (अगर वे पहले से ही कैश में नहीं हैं) । वही द्विआधारी फ़ाइल के लिए सच है (उदाहरण के लिए.nc) EDDTableFromFiles के उपवर्ग।  

  • EDDTableFromFiles के लिए गैर-binary फ़ाइलों के लिए उप-वर्ग (उदाहरण के लिए, csv) एक एक्सटेंशन के साथ डेटा फाइलें यह संकेत देती हैं कि वे बाहरी रूप से संपीड़ित फ़ाइलों को ऑन-द-फ्लाई को डिकंप्रेस किया जाएगा क्योंकि फ़ाइल को पढ़ा जाता है।  

  • REQUIREMENT: यदि बाहरी रूप से संपीड़ित फ़ाइल का प्रकार उपयोग किया जाता है (उदाहरण के लिए.tgzया.zip) संपीड़ित फ़ाइल के अंदर 1 से अधिक फ़ाइल का समर्थन करता है, संपीड़ित फ़ाइल में सिर्फ 1 फ़ाइल होना चाहिए।  

  • REQUIREMENT: यह सुविधा मानती है कि बाहरी रूप से संपीड़ित फ़ाइलों की सामग्री बदल नहीं जाती है, ताकि एक कैश्ड डिकंप्रेस्ड फ़ाइल का पुन: उपयोग किया जा सके। यदि कुछ या सभी डेटासेट की डेटा फ़ाइलों को कभी-कभी बदल दिया जाता है, तो उन फ़ाइलों को संपीड़ित न करें। यह आम उपयोग के अनुरूप है, क्योंकि लोग आम तौर पर उन फ़ाइलों को संपीड़ित नहीं करते हैं जिन्हें उन्हें कभी-कभी बदलने की आवश्यकता होती है।  

  • <फ़ाइल नाम Regex> इस काम को बनाने के लिए, डेटासेट का<फ़ाइलNameRegex> को संपीड़ित फ़ाइलों के नाम से मिलान करना चाहिए। जाहिर है, जैसे regexes।\सभी फ़ाइल नामों से मेल खाते हैं। यदि आप एक विशिष्ट फ़ाइल प्रकार निर्दिष्ट करते हैं, उदाहरण के लिए, ।\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.nc, फिर आपको संपीड़न विस्तार को भी शामिल करने के लिए रेगेक्स को संशोधित करने की आवश्यकता है, उदाहरण के लिए,। \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.nc\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.gz(यदि सभी फाइलें होंगी) *.nc.gzफ़ाइलें  

  • यह ठीक है यदि आपके डेटासेट में संपीड़ित का मिश्रण और संपीड़ित फ़ाइलों का मिश्रण शामिल है। यदि आप मानते हैं कि कुछ फाइलें (उदाहरण के लिए, पुरानी फाइलें) अक्सर इस्तेमाल किया जाएगा और इसलिए उन्हें कंप्रेस करके डिस्क स्पेस को बचाने के लिए उपयोगी होगा। इस काम को बनाने के लिए,<फ़ाइलNameRegex> को संपीड़ित और संपीड़ित फ़ाइलों के नाम, उदाहरण के लिए, मिलान करना चाहिए।\या।\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.nc (|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.gz) (जहां उस के अंत में कैप्चर समूह यह निर्दिष्ट करता है कि.gzवैकल्पिक है।  

  • यदि आप किसी भी समय संग्रह में विशिष्ट फ़ाइलों को संपीड़ित या डीकंप्रेस करते हैं तो यह ठीक है। यदि डेटासेट का उपयोग नहीं किया जाता है [<EveryNMillis (#updateeverynmillis) डेटासेट सेट करेंझंडाबताने के लिएERDDAP™डेटासेट को फिर से लोड करने के लिए और इस प्रकार परिवर्तन को नोटिस करता है। दिलचस्प बात यह है कि आप एक ही डेटासेट में विभिन्न फ़ाइलों के लिए विभिन्न संपीड़न एल्गोरिदम और सेटिंग्स का उपयोग कर सकते हैं (उदाहरण के लिए.bz2शायद ही कभी इस्तेमाल फ़ाइलों के लिए,.gzअक्सर इस्तेमाल की जाने वाली फ़ाइलों के लिए और अक्सर इस्तेमाल की जाने वाली फ़ाइलों के लिए कोई संपीड़न नहीं) , सिर्फ यकीन है कि रेगेक्स उन सभी फ़ाइल एक्सटेंशनों का समर्थन करता है जो उपयोग में हैं, उदाहरण के लिए, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.nc (|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.gz|\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.bz2) ।  

  • बेशक, विभिन्न संपीड़न एल्गोरिदम के लिए संपीड़न अनुपात और गति स्रोत फ़ाइल और सेटिंग्स के साथ भिन्न होती है (उदाहरण के लिए, संपीड़न स्तर) । यदि आप अपनी फ़ाइलों के लिए इस प्रणाली को अनुकूलित करना चाहते हैं, तो अपनी फ़ाइलों के साथ और संपीड़न सेटिंग्स की एक श्रृंखला के साथ विभिन्न संपीड़न विधियों का परीक्षण करें। यदि आप ईमानदारी से अच्छे हैं (सबसे अच्छा) सेटअप, हम थोड़ा सिफारिश करेंगेgzip (.gz) ।gzipसबसे छोटी संकुचित फ़ाइल नहीं बनाती (यह काफी करीब है) लेकिन यह बहुत जल्दी फ़ाइल को संपीड़ित करता है और (महत्वपूर्णERDDAP™उपयोगकर्ता) फ़ाइल को जल्दी से डिकंप्रेस करता है। प्लस,gzipसॉफ्टवेयर हर लिनक्स और मैक ओएस स्थापना के साथ मानक आता है और 7Zip और लिनक्स ऐड-ऑन जैसे गिट बैश जैसे मुफ्त उपकरणों के माध्यम से विंडोज के लिए आसानी से उपलब्ध है। उदाहरण के लिए, एक स्रोत फ़ाइल को एक स्रोत फ़ाइल में संपीड़ित करने के लिए.gzफ़ाइल का संस्करण (एक ही फ़ाइल नाम, लेकिन साथ में.gzपरिशिष्ट) उपयोग (लिनक्स, मैक ओएस और गिट बैश में)
    gzip sourceName
    एक decompressed.gzफ़ाइल वापस मूल में, उपयोग बंदूक sourceName.gz
    निर्देशिका में प्रत्येक स्रोत फ़ाइलों को संपीड़ित करने के लिए और इसके उपनिर्देशिकाओं, पुनरावर्ती, उपयोग gzip-r निदेशकनाम
    प्रत्येक को डिकंप्रेस करने के लिए.gzनिर्देशिका और इसके उपनिर्देशों में फाइलें, पुनरावर्ती रूप से, उपयोग Gunzip -r निदेशकनाम
     

  • चेतावनी: बाह्य रूप से संपीड़ित न करें (gzip) फ़ाइलें जो पहले से ही आंतरिक रूप से संपीड़ित हैं! कई फाइलें पहले से ही आंतरिक रूप से संकुचित डेटा है। यदि आपgzipइन फ़ाइलों, जिसके परिणामस्वरूप फ़ाइलों को बहुत छोटा नहीं होगा ()<5%ERDDAP™जब उन्हें पढ़ने की आवश्यकता होती है तो उन्हें बर्बाद करने का समय होगा। उदाहरण के लिए:

    • डेटा फाइलें: उदाहरण के लिए,.nc4, और.hdf5 फाइलें: कुछ फाइलें आंतरिक संपीड़न का उपयोग करती हैं; कुछ नहीं करते। कैसे बताएं: संपीड़ित चर में "\_ChunkSize" गुण होते हैं। इसके अलावा, अगर ग्रिड का एक समूह.ncया.hdfफाइलें सभी अलग-अलग आकार हैं, वे आंतरिक रूप से संपीड़ित होने की संभावना रखते हैं। यदि वे सभी समान आकार के होते हैं, तो वे आंतरिक रूप से संपीड़ित नहीं होते हैं।

    • Englishالعربية中文(简体)हिन्दी; हिंदीاردو

    • ऑडियो फाइलें: उदाहरण के लिए, .mp3, और .ogg।

    • वीडियो फाइलें: उदाहरण के लिए, .mp4, .ogv, और .webm।

एक दुर्भाग्यपूर्ण अजीब मामला: .wav ऑडियो फाइलें विशाल हैं और आंतरिक रूप से संपीड़ित नहीं हैं। यह संपीड़न के लिए अच्छा होगा (gzip) उन्हें, लेकिन आम तौर पर आपको ऐसा नहीं करना चाहिए क्योंकि यदि आप करते हैं, तो उपयोगकर्ता अपने ब्राउज़र में संपीड़ित फ़ाइलों को खेलने में सक्षम नहीं होंगे।  

  • टेस्ट केस: संपीड़न (साथgzip) 1523 ग्रिड के साथ एक डेटासेट.ncफ़ाइलें

    • स्रोत फ़ाइलों में डेटा sparse था (कई लापता मान) ।
    • कुल डिस्क स्थान संपीड़न से पहले 57 जीबी से उसके बाद 7 जीबी तक चला गया।
    • 1 समय बिंदु से बहुत सारे डेटा के लिए अनुरोध है<संपीड़न से पहले और बाद में 1 सेकंड।
    • 365 समय बिंदुओं के लिए एक अनुरोध (सबसे खराब स्थिति) 4 से 71 तक चला गया।  

मेरे लिए जो किसी भी डेटासेट के लिए एक उचित व्यापार-बंद है, और निश्चित रूप से डेटासेट के लिए जो अक्सर उपयोग किए जाते हैं।  

  • आंतरिक बनाम बाह्य संपीड़न - द्वारा प्रस्तुत आंतरिक फ़ाइल संपीड़न की तुलना में.nc4 और 4.hdf5 फाइलें,ERDDAPबाह्य रूप से संपीड़ित द्विआधारी फ़ाइलों के लिए दृष्टिकोण के फायदे और नुकसान हैं। नुकसान यह है: एक बार एक फ़ाइल का एक छोटा सा हिस्सा पढ़ने के लिए, आंतरिक संपीड़न बेहतर है क्योंकिEDDGridFromFiles केवल कुछ ही हिस्से को डिकॉम्प करने की जरूरत है (s) फ़ाइल की पूरी फ़ाइल नहीं है। लेकिनERDDAPकुछ फायदे हैं:

    • ERDDAP™डेटा फ़ाइलों के सभी प्रकार के संपीड़न का समर्थन करता है (बाइनरी और गैर-बाइनरी, उदाहरण के लिए,.nc3 और csv) नहीं.nc4 और 4.hdf4.
    • यदि किसी फ़ाइल के थोक को थोड़े समय में एक बार से अधिक पढ़ने की आवश्यकता होती है, तो यह एक बार फ़ाइल को डिकंप्रेस करने और इसे कई बार पढ़ने के लिए समय बचाता है। यह होता हैERDDAP™जब कोई उपयोगकर्ता डेटासेट के लिए मेक-ए-ग्राफ का उपयोग करता है और ग्राफ में छोटे बदलावों की एक श्रृंखला बनाता है।
    • संकुचित फ़ाइलों को रखने की क्षमता और उसी संग्रह में संपीड़ित फ़ाइलों को संपीड़ित नहीं करने की क्षमता आपको अधिक नियंत्रण की अनुमति देती है, जिस पर फ़ाइलों को संकुचित किया जाता है और जो नहीं होते हैं। और यह जोड़ा गया नियंत्रण वास्तव में स्रोत फ़ाइल को संशोधित किए बिना आता है (चूंकि आप ई.जी. के साथ एक फ़ाइल को संपीड़ित कर सकते हैं,.gzऔर फिर इसे मूल फ़ाइल प्राप्त करने के लिए डिकंप्रेस करें) ।
    • किसी भी समय किसी दिए गए फ़ाइल को संकुचित करने की क्षमता और इसे कैसे संकुचित किया जाता है (विभिन्न एल्गोरिदम और सेटिंग्स) आपको सिस्टम के प्रदर्शन पर अधिक नियंत्रण देता है। और आप किसी भी समय मूल असंपीड़ित फ़ाइल को आसानी से ठीक कर सकते हैं।

जबकि न तो दृष्टिकोण सभी स्थितियों में एक विजेता है, यह स्पष्ट है किERDDAPबाह्य रूप से संपीड़ित फ़ाइलों से डेटा की सेवा करने की क्षमता बाहरी संपीड़न को आंतरिक संपीड़न के लिए उचित विकल्प बनाती है।.nc4 और 4.hdf5. यह महत्वपूर्ण है कि आंतरिक संपीड़न मुख्य कारणों में से एक है जो लोग उपयोग करने के लिए चुनते हैं.nc4 और 4.hdf5.  

Decompressed कैश

ERDDAP™किसी भी संकुचित द्विआधारी का विघटन संस्करण बनाता है (उदाहरण के लिए.nc) जब फ़ाइल को पढ़ने की आवश्यकता होती है तो डेटा फ़ाइल। डिकंप्रेस्ड फ़ाइलों को डेटासेट की निर्देशिका में भीतर रखा जाता है बड़ाParentDirectory / decompressed /। हाल ही में इस्तेमाल नहीं किया गया है जो डिकंप्रेस्ड फ़ाइलों को अंतरिक्ष को मुक्त करने के लिए हटा दिया जाएगा जब संचयी फ़ाइल का आकार>10GB होता है। आप इसे बदल सकते हैं<DecompressedCacheMaxGB> (डिफ़ॉल्ट=10) डेटासेट Xml.xml, उदाहरण के लिए,

        <decompressedCacheMaxGB>40</decompressedCacheMaxGB>  

इसके अलावा, पिछली 15 मिनट में इस्तेमाल की जाने वाली डिकंप्रेस्ड फ़ाइलों को प्रत्येक प्रमुख डेटासेट रीलोड के प्रारंभ में हटा दिया जाएगा। आप इसे बदल सकते हैं<DecompressedCacheMaxMinutesपुराना> (डिफ़ॉल्ट=15) डेटासेट Xml.xml, उदाहरण के लिए,

        <decompressedCacheMaxMinutesOld>60</decompressedCacheMaxMinutesOld>  

बड़ी संख्या अच्छी है, लेकिन डीकंप्रेस्ड फ़ाइलों का संचयी आकार का कारण बन सकता है बड़ाParentDirectory डिस्क स्पेस से बाहर निकलने के लिए, जो गंभीर समस्याओं का कारण बनता है।  

  • क्योंकि एक फ़ाइल को डीकंप्रेस करना समय की एक महत्वपूर्ण राशि ले सकता है (0.1 से 10 सेकंड) , संपीड़ित फ़ाइलों के साथ डेटासेट डेटासेट को डेटासेट सेट करने से लाभ हो सकता है [<nThreads> (#nthread) एक उच्च संख्या के लिए सेटिंग (2? 3? 4?) । यहां तक कि उच्च संख्या के लिए डाउनसाइड (उदाहरण के लिए, 5? 6? 7?) रिटर्न को कम कर रहे हैं और एक उपयोगकर्ता का अनुरोध तब प्रणाली के संसाधनों के उच्च प्रतिशत का उपयोग कर सकता है, इस प्रकार अन्य उपयोगकर्ता के अनुरोधों के प्रसंस्करण को काफी धीमा कर देता है। इस प्रकार, कोई आदर्श nThread सेटिंग नहीं है, विभिन्न सेटिंग्स के साथ अलग-अलग स्थितियों में सिर्फ अलग-अलग परिणाम हैं।  

क्रमबद्ध आयाम मान

प्रत्येक आयाम के लिए मान को क्रमबद्ध क्रम में होना चाहिए (पहली बार छोड़कर, आरोही या वंशज (सबसे ज्यादा) आयाम जो आरोही होना चाहिए) । मूल्यों को अनियमित रूप से स्पेस किया जा सकता है। कोई संबंध नहीं हो सकता। यह आवश्यकता हैCF मेटाडाटा मानक। यदि किसी भी आयाम के मान क्रमबद्ध क्रम में नहीं हैं, तो डेटासेट को लोड नहीं किया जाएगा और लोड नहीं किया जाएगा।ERDDAP™लॉग फाइल में प्रथम अनॉर्टेड मान की पहचान करेगा, बड़ाParentDirectory /logs/log.txt।

Unsorted आयाम मान लगभग हमेशा स्रोत डेटासेट के साथ एक समस्या का संकेत देते हैं। यह आमतौर पर तब होता है जब एकत्रीकरण में एक गलतनाम या अनुचित फ़ाइल शामिल की जाती है, जिससे एक अनधिकृत समय आयाम होता है। इस समस्या को हल करने के लिए त्रुटि संदेश देखेंERDDAP™लॉग.txt फ़ाइल को ऑफेंडिंग टाइम वैल्यू खोजने के लिए। फिर संबंधित फ़ाइल खोजने के लिए स्रोत फ़ाइलों को देखें (पहले या एक के बाद) यह एकत्रीकरण में नहीं है।

निदेशक

MAY फ़ाइलों को एक निर्देशिका में, या एक निर्देशिका में और उसके उपनिर्देशन (लगातार) । यदि फ़ाइलों की एक बड़ी संख्या है (उदाहरण के लिए, > 1,000) ऑपरेटिंग सिस्टम (इस प्रकारEDDGridसेफिल) यदि आप फ़ाइलों को उपनिर्देशों की एक श्रृंखला में स्टोर करते हैं तो अधिक कुशलतापूर्वक काम करेंगे (प्रति वर्ष, या बहुत लगातार फ़ाइलों के साथ डेटासेट के लिए प्रति माह एक) इसलिए, किसी दिए गए निर्देशिका में फ़ाइलों की एक बड़ी संख्या कभी नहीं होती है।  

<कैशFromUrl>

सबEDDGridFromFiles and all EDDTableFromFiles डाटासेट एक सेट का समर्थन करते हैं जो बताते हैंERDDAP™सभी दूरस्थ डेटासेट फ़ाइलों की एक प्रति डाउनलोड करने और बनाए रखने के लिए, या कुछ फ़ाइलों का कैश (आवश्यकतानुसार डाउनलोड करें) । यह अविश्वसनीय रूप से उपयोगी हो सकता है देखेंकैश FromUrl प्रलेखन

रिमोट डायरेक्टरीज़ और रेंज अनुरोध

(AKA बाइट सर्विंग, बाइट रेंज अनुरोध, स्वीकार्य-रेंजhttpहेडर)
EDDGridसे NcFiles, EDDTableFromMultidimNcFiles, EDDTableFromNcFiles, और EDDTableFromNcCFFiles, कर सकते हैं कभी कभी से डेटा की सेवा.ncदूरस्थ सर्वर पर फाइलें और HTTP के माध्यम से एक्सेस अगर सर्वर समर्थन करता हैByteHTTP रेंज अनुरोध के माध्यम से (सेवा करने के लिए HTTP तंत्र) । यह संभव है क्योंकि netcdf-java (जोERDDAP™पढ़ने के लिए उपयोग.ncफ़ाइलें) दूरस्थ से डेटा पढ़ने का समर्थन करता है.ncHTTP रेंज अनुरोधों के माध्यम से फ़ाइलें।

ऐसा मत करो! यह घातक और धीमी गति से है। इसके बजाय, [] का उपयोग करें<कैशFromUrl> प्रणाली (#cachefromurl) ।

प्रवेशERDDAP™बाइट रेंज अनुरोधों के माध्यम से फ़ाइलों के रूप में डेटासेट -- इसे छोड़कर सामग्री पर बढ़ने के लिए (सिद्धांत) में डेटासेट के बारे में सोचनाERDDAP™एक विशाल.nc"आवेदन" द्वारा फ़ाइल.nc"बेस ओपेन"DAPकिसी दिए गए डेटासेट के लिए यूआरएल (उदाहरण के लिए https://myserver.org/erddap/griddap/datasetID.nc और इसके बाद एक सबसेट निर्दिष्ट करने के बाद एक क्वेरी जोड़कर) , शायद यह पूछने के लिए कि क्या आप netcdf-java का उपयोग कर सकते हैं,Ferretअन्यNetCDFक्लाइंट सॉफ्टवेयर के माध्यम से डेटा पढ़ने के लिए HTTP रेंज अनुरोध सेERDDAP। उत्तर नहीं है क्योंकि वास्तव में एक विशाल नहीं है ".nc"फ़ाइल"। यदि आप ऐसा करना चाहते हैं, तो इन विकल्पों में से एक करें:

  • उपयोग(OPeN)DAPग्राहक सॉफ्टवेयर द्वारा दी गई ग्रिडडैप सेवाओं से कनेक्ट करने के लिएERDDAP। यह क्या हैDAP (इस प्रकारERDDAP) इसके लिए डिज़ाइन किया गया था। यह बहुत कुशल है।
  • या, स्रोत फ़ाइल डाउनलोड करें (s) से"files"प्रणाली (या एक सबसेट फ़ाइल के माध्यम से.nc? क्वेरी) अपने कंप्यूटर के लिए और netcdf-java का उपयोग करें,Ferretअन्यNetCDFग्राहक सॉफ्टवेयर पढ़ने के लिए (अब) स्थानीय फाइल (s) ।  

कैश्ड फाइल जानकारी

जबEDDGridFromFiles dataset पहले लोड हो रहा है,EDDGridFromFiles प्रासंगिक फ़ाइलों के सभी से जानकारी पढ़ता है और टेबल बनाता है (प्रत्येक फ़ाइल के लिए एक पंक्ति) प्रत्येक वैध फ़ाइल और प्रत्येक "बाद" के बारे में जानकारी के साथ (अलग या अमान्य) फ़ाइल

  • टेबल को डिस्क पर भी संग्रहीत किया जाता है, जैसा किNetCDFv3.ncफ़ाइलों में बड़ाParentDirectory /dataset/ Last2CharsOfDatasetID / datasetID / फ़ाइलों में नामित: dirTable.nc (जो अद्वितीय निर्देशिका नामों की सूची रखता है) , फ़ाइल टेबल.nc (जो प्रत्येक वैध फ़ाइल की जानकारी के साथ तालिका रखता है) , बुराफिल.nc (जो प्रत्येक बुरी फ़ाइल की जानकारी के साथ तालिका रखता है) ।
  • पहुँच को गति देने के लिएEDDGridडेटासेट (लेकिन अधिक स्मृति का उपयोग करने के खर्च पर) , आप उपयोग कर सकते हैं

true
बताने के लिएERDDAP™मेमोरी में फ़ाइल सूचना तालिका की एक प्रति रखने के लिए।

  • डिस्क पर फ़ाइल सूचना तालिका की प्रतिलिपि तब भी उपयोगी होती है जबERDDAP™बंद हो गया है और फिर से शुरू किया गया है: यह बचाता हैEDDGridFromFiles से डेटा फ़ाइलों के सभी को फिर से पढ़ने के लिए।
  • जब डेटासेट को पुनः लोड किया जाता है,ERDDAP™केवल नए फाइलों और फ़ाइलों में डेटा पढ़ने की जरूरत है जो बदल गए हैं।
  • यदि किसी फ़ाइल में अन्य फ़ाइलों से एक अलग संरचना है (उदाहरण के लिए, चर में से एक के लिए एक अलग डेटा प्रकार, या "के लिए एक अलग मानयूनिटविशेषता) ,ERDDAPफ़ाइल को "bad" फ़ाइलों की सूची में जोड़ता है। फ़ाइल के साथ समस्या के बारे में जानकारी को लिखा जाएगा बड़ाParentDirectory /logs/log.txt फ़ाइल।
  • आपको कभी भी इन फ़ाइलों के साथ हटाने या काम करने की आवश्यकता नहीं है। एक अपवाद है: यदि आप अभी भी डेटासेट में बदलाव कर रहे हैंdatasets.xmlसेटअप, आप इन फ़ाइलों को बल देने के लिए चाहते हैंERDDAP™सभी फ़ाइलों को फिर से पढ़ने के लिए क्योंकि फ़ाइलों को अलग-अलग ढंग से पढ़ा / व्याख्या किया जाएगा। यदि आपको कभी इन फ़ाइलों को हटाने की आवश्यकता है, तो आप ऐसा कर सकते हैं जबERDDAP™चल रहा है। (फिर सेटझंडाडेटासेट ASAP को फिर से लोड करने के लिए।) हालांकि,ERDDAP™आमतौर पर नोटिस करता है किdatasets.xmlजानकारी फाइल से मेल नहीं खाती टेबल की जानकारी और स्वचालित रूप से फ़ाइल टेबल को हटा देता है।
  • यदि आप प्रोत्साहित करना चाहते हैंERDDAP™संग्रहीत डेटासेट जानकारी अद्यतन करने के लिए (उदाहरण के लिए, यदि आपने अभी जोड़ा है, तो कुछ फ़ाइलों को डेटासेट के डेटा डाइरेक्टरी में बदल दिया है या बदल दिया है।) , उपयोग करेंध्वज प्रणालीमजबूर होनाERDDAP™कैश्ड फ़ाइल जानकारी अपडेट करने के लिए।  

हैंडलिंग अनुरोध

जब डेटा के लिए ग्राहक का अनुरोध संसाधित किया जाता है,EDDGridFromFiles जल्दी से तालिका में वैध फ़ाइल जानकारी के साथ देख सकते हैं कि किस फाइल का अनुरोध डेटा है।  

कैश्ड फाइल जानकारी को अद्यतन करना

जब भी डेटासेट को पुनः लोड किया जाता है, तो कैश्ड फ़ाइल जानकारी अपडेट की जाती है।

  • डेटासेट को समय-समय पर रीलोड किया जाता है जैसा कि द्वारा निर्धारित किया जाता है<ReloadEveryNMinutes> डेटासेट की जानकारी मेंdatasets.xml।
  • जब भी संभव हो डेटासेट को पुनः लोड किया जाता हैERDDAP™पता लगाता है कि आपने जोड़ा है, हटा दिया है,स्पर्श (फ़ाइल के अंतिम परिवर्तन के लिए संशोधित समय) , या एक डेटाफ़ाइल बदल दिया।
  • यदि आप उपयोग करते हैं तो डेटासेट को जल्द से जल्द लोड किया जाता हैध्वज प्रणाली

जब डेटासेट को पुनः लोड किया जाता है,ERDDAP™वर्तमान में उपलब्ध फ़ाइलों की तुलना कैश्ड फ़ाइल सूचना तालिका में की जाती है। नई फ़ाइलों को वैध फ़ाइलों की तालिका में पढ़ा और जोड़ा जाता है। उन फ़ाइलों को जो अब मौजूद नहीं हैं वे वैध फ़ाइलों की तालिका से हटा दिए गए हैं। जहां फ़ाइल टाइमस्टैम्प बदल गया है, वहां फ़ाइल को पढ़ा जाता है और उनकी जानकारी अपडेट की जाती है। नई तालिकाएं स्मृति में और डिस्क पर पुराने तालिकाओं को प्रतिस्थापित करती हैं।  

बुरा फ़ाइलें

खराब फ़ाइलों की तालिका और कारणों से फ़ाइलों को खराब घोषित किया गया था (भ्रष्ट फ़ाइल, लापता चर आदि।) ईमेल करने के लिए ईमेल किया जाता है सब कुछ ईमेल पता (शायद आप) हर बार डेटासेट को पुनः लोड किया जाता है। आपको जितनी जल्दी हो सके इन फ़ाइलों को प्रतिस्थापित या मरम्मत करनी चाहिए।  

लापता चर

यदि कुछ फ़ाइलों में कुछ नहीं है तो कुछ फ़ाइलों में से कुछ नहीं है।dataVariableडेटासेट में परिभाषितdatasets.xmlवह ठीक है। कबEDDGridFromFiles उन फ़ाइलों में से एक पढ़ता है, यह कार्य करेगा जैसे कि फ़ाइल में चर था, लेकिन सभी लापता मूल्यों के साथ।  

FTP Trouble/Advice

यदि आप FTP नई डेटा फ़ाइलों को करने के लिएERDDAP™सर्वर जबकिERDDAP™चल रहा है, यह मौका है किERDDAP™FTP प्रक्रिया के दौरान डेटासेट को फिर से लोड किया जाएगा। अक्सर ऐसा होता है जितना आप सोच सकते हैं! यदि ऐसा होता है तो फ़ाइल मान्य होगी। (यह एक वैध नाम है) लेकिन फ़ाइल अभी तक मान्य नहीं है। अगरERDDAP™उस अमान्य फ़ाइल से डेटा पढ़ने की कोशिश करता है, जिसके परिणामस्वरूप त्रुटि फ़ाइल को अमान्य फ़ाइलों की तालिका में जोड़ा जाएगा। यह अच्छा नहीं है। इस समस्या से बचने के लिए, एक अस्थायी फ़ाइल नाम का उपयोग करें जब FTP फ़ाइल है, उदाहरण के लिए, ABC2005.nc\_TEMP। फिर, फ़ाइलNameRegex परीक्षण (नीचे देखें) यह संकेत देगा कि यह एक प्रासंगिक फ़ाइल नहीं है। FTP प्रक्रिया पूरी होने के बाद, फ़ाइल को सही नाम में बदलें। नामकरण प्रक्रिया फ़ाइल को तत्काल में प्रासंगिक होने का कारण बनाती है।  

"0 फाइलें" त्रुटि संदेश

यदि आप दौड़ते हैंजनरेट DatasetXmlयादास, या यदि आप लोड करने की कोशिश करते हैंEDDGridसे...फ़िल्स डेटासेट मेंERDDAP™, और आपको "0 फाइलें" त्रुटि संदेश मिलता है जो दर्शाता है किERDDAP™निर्देशिका में 0 मिलान फ़ाइलों को पाया (जब आपको लगता है कि उस निर्देशिका में फ़ाइलों को मिलान करना है) :

  • जाँच करें कि वास्तव में फ़ाइलें उस निर्देशिका में हैं।
  • निर्देशिका नाम की वर्तनी की जाँच करें।
  • फ़ाइल NameRegex की जाँच करें। वास्तव में, वास्तव में regexes के साथ गलतियों को करना आसान है। परीक्षण प्रयोजनों के लिए, रेगेक्स की कोशिश करें। (इसे देखेंरेगेक्स प्रलेखनऔरRegex ट्यूटोरियल।)
  • जांचें कि वह उपयोगकर्ता जो प्रोग्राम चला रहा है (उदाहरण के लिए, उपयोगकर्ता=tomcat (?) टॉमकैट के लिएERDDAP) उन फ़ाइलों के लिए 'रीड' अनुमति है।
  • कुछ ऑपरेटिंग सिस्टम में (उदाहरण के लिए, SELinux) और सिस्टम सेटिंग्स के आधार पर, जो उपयोगकर्ता ने कार्यक्रम को चलाने के लिए फ़ाइलों की निर्देशिका के लिए अग्रणी डायरेक्टरी की पूरी श्रृंखला के लिए 'रीड' अनुमति होनी चाहिए।  

EDDGridसेफिले कंकाल एक्सएमएल

  • कंकाल XML सभी के लिएEDDGridfromFiles subclasses is:

  <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*FromAudioFiles

EDDGridAudioFiles और EDDTableFromAudioFiles स्थानीय ऑडियो फ़ाइलों के संग्रह से कुल डेटा। (पहले दिखाई दियाERDDAP™v1.82.) अंतर यह है किEDDGridFromAudioFiles डेटा को बहुआयामी डेटासेट के रूप में मानता है (आमतौर पर 2 आयामों के साथ:\[फ़ाइल शुरू समय\]और\[Elapsed एक फ़ाइल के भीतर समय\]) जबकि EDDTableFromAudioFiles डेटा को सारणीबद्ध डेटा के रूप में व्यवहार करता है (आमतौर पर फ़ाइल startTime के लिए कॉलम के साथ, फ़ाइल के साथ elapsedTime, और ऑडियो चैनलों से डेटा) ।EDDGridFromAudioFiles की आवश्यकता है कि सभी फ़ाइलों में समान संख्या के नमूने हैं, इसलिए यदि यह सच नहीं है, तो आपको EDDTableFromAudioFiles का उपयोग करना होगा। अन्यथा, जिनका विकल्प EDD प्रकार का उपयोग करना पूरी तरह से आपकी पसंद है। EDDTableFromAudioFiles: आप अन्य जानकारी के साथ अन्य चर जोड़ सकते हैं, उदाहरण के लिए,stationIDस्टेशन प्रकार दोनों मामलों में, एक एकीकृत समय चर की कमी इन EDD प्रकारों से डेटा के साथ काम करना मुश्किल बनाती है, लेकिन एक एकीकृत समय चर को स्थापित करने का कोई अच्छा तरीका नहीं था।

इन क्लास के सुपरक्लास देखें,EDDGridसेफिलऔरEDDTableFromFilesसामान्य जानकारी के लिए, यह कैसे काम करता है और इसका उपयोग कैसे किया जाता है।

हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। चूंकि ऑडियो फ़ाइलों में ध्वनि डेटा के एन्कोडिंग से संबंधित जानकारी के अलावा कोई मेटाडाटा नहीं है, इसलिए आपको जेनरेटडाटासेट से आउटपुट संपादित करना होगा आवश्यक जानकारी प्रदान करने के लिए XML (उदाहरण के लिए, शीर्षक, सारांश,creator\_nameसंस्था, इतिहास) ।

विवरण:

  • बड़ी संख्या में ऑडियो फ़ाइल प्रारूप हैं। वर्तमान में,ERDDAP™अधिकांश .wav और .au फ़ाइलों से डेटा पढ़ सकते हैं। यह वर्तमान में अन्य प्रकार की ऑडियो फ़ाइलों को नहीं पढ़ सकता है, उदाहरण के लिए, Aiff या .mp3। यदि आपको अन्य ऑडियो फ़ाइल प्रारूपों या .wav और .au के अन्य संस्करण के लिए समर्थन की आवश्यकता है, तो कृपया अपने अनुरोध को क्रिस पर ईमेल करें। जॉन at noaa.gov. या, एक वर्कराउंड के रूप में आप अभी उपयोग कर सकते हैं, आप अपने ऑडियो फ़ाइलों को PCM \________________________________________________________________________________________________________________________________________________________________________________________________________________________________________ हस्ताक्षर (पूर्णांक डेटा के लिए) PCM (फ्लोटिंग पॉइंट डेटा के लिए) .wav फ़ाइलें ताकिERDDAP™उनके साथ काम कर सकते हैं।
  • वर्तमान में,ERDDAP™क्या के साथ ऑडियो फ़ाइलों को पढ़ सकते हैंJava's AudioFormat class call PCM \_FLOAT, PCM \_SIGNED, PCM \_UNSIGNED, ALAW, and ULAW encoding.ERDDAP™पीसीएम \_UNSIGNED मान परिवर्तित (उदाहरण के लिए, 0 से 255) हस्ताक्षरित मूल्यों में (उदाहरण के लिए -128 to 128) डेटा मूल्यों में बिट्स को पीछे छोड़ कर।ERDDAP™ALAW और ULAW को उनके मूल एनकोडेड बाइट प्रारूप से शॉर्ट में एन्कोड किया गया (int16) मान चूंकिJavaBigEndian=true डेटा चाहता है,ERDDAP™BigEndian=false के साथ संग्रहीत डेटा के बाइट्स को पुनर्व्यवस्थित करें (थोड़ा एंडियन) मूल्यों को सही ढंग से पढ़ने के लिए। अन्य सभी एन्कोडिंग के लिए (पीसीएम) ,ERDDAP™जैसे डेटा पढ़ता है।
  • कबERDDAP™ऑडियो फ़ाइलों से डेटा पढ़ता है, यह फ़ाइल के उपलब्ध ऑडियो मेटाडाटा को वैश्विक विशेषताओं में परिवर्तित करता है। यह हमेशा शामिल होगा (नमूना मूल्यों के साथ दिखाया गया)

स्ट्रिंग ऑडियोबिंदी "false"; // झूठी या झूठी int ऑडियो चैनल 1; स्ट्रिंग ऑडियोएनकोडिंग "PCM \_SIGNED"; फ्लोट ऑडियोFrameRate 96000.0; / प्रति सेकंड Int AudioFrameSize 2; //# प्रति फ्रेम डेटा बाइट्स फ्लोट ऑडियोSampleRate 96000.0; / प्रति सेकंड Int AudioSampleSizeInBits 16; //# बिट्स प्रति चैनल प्रति नमूना

के लिएERDDAP'के प्रयोजनों, एक फ्रेम एक नमूना है, जो समय में एक बिंदु के लिए डेटा है के साथ समानार्थी है। विशेषताERDDAP™डेटा का वर्णन करने वाली जानकारी होगी क्योंकि यह स्रोत फ़ाइलों में थी।ERDDAP™अक्सर डेटा पढ़ने के दौरान इसे बदल दिया जाएगा, उदाहरण के लिए, पीसीएम \_UNSIGNED, ALAW, और ULAW एन्कोडेड डेटा को पीसीएम \_SIGNED में परिवर्तित कर दिया जाता है, और bigEndian=false डेटा को bigEndian=true डेटा में परिवर्तित किया जाता है। (क्या हैJavaइसे पढ़ना चाहता है) । अंत में, डेटा मान मेंERDDAP™हमेशा होगाPCM-encodedडेटा मान (अर्थात्, ध्वनि तरंग के सरल अंकीय नमूने) ।

  • कबERDDAP™ऑडियो फ़ाइलों से डेटा पढ़ता है, यह पूरी फ़ाइल पढ़ता है।ERDDAP™प्रति चैनल लगभग 2 बिलियन नमूने पढ़ सकते हैं। उदाहरण के लिए, यदि नमूना दर 44,100 नमूने प्रति सेकंड है, तो 2 अरब नमूने प्रति फ़ाइल लगभग 756 मिनट ध्वनि डेटा का अनुवाद करते हैं। यदि आपके पास इस डेटा की राशि से अधिक ऑडियो फाइलें हैं, तो आपको फ़ाइलों को छोटे टुकड़ों में तोड़ने की जरूरत है ताकि फ़ाइलों को छोटे टुकड़ों में तोड़ दिया जा सके।ERDDAP™उन्हें पढ़ सकते हैं।
  • क्योंकिERDDAP™पूरे ऑडियो फ़ाइलों को पढ़ता है,ERDDAP™बड़े ऑडियो फ़ाइलों के साथ काम करने के लिए स्मृति की एक बड़ी राशि तक पहुंच होना चाहिए। देखेंERDDAPमेमोरी सेटिंग्स। फिर, यदि यह एक समस्या है, तो एक वर्कअराउंड जिसे आप अभी उपयोग कर सकते हैं, फाइलों को छोटे टुकड़ों में तोड़ना है ताकि फ़ाइलों को छोटे टुकड़ों में तोड़ दिया जा सके।ERDDAP™उन्हें कम स्मृति के साथ पढ़ सकते हैं।
  • कुछ ऑडियो फ़ाइलों को गलत तरीके से लिखा गया था।ERDDAP™ऐसे मामलों से निपटने के लिए एक छोटा सा प्रयास करना। लेकिन सामान्य तौर पर, जब कोई त्रुटि होती है,ERDDAP™एक अपवाद फेंकना होगा (और उस फ़ाइल को अस्वीकार) या (यदि त्रुटि अनिश्चित है) डेटा पढ़ें (लेकिन डेटा गलत हो जाएगा) ।
  • ERDDAP™ध्वनि की मात्रा की जांच या परिवर्तन नहीं करता है। आदर्श रूप से, पूर्ण ऑडियो डेटा को डेटा प्रकार की पूरी श्रृंखला का उपयोग करने के लिए स्केल किया गया है।
  • ऑडियो फ़ाइलों और ऑडियो खिलाड़ियों के पास लापता मूल्यों के लिए कोई प्रणाली नहीं है (उदाहरण के लिए, -999 या फ्लोट.NaN) । इसलिए ऑडियो डेटा में कोई लापता मान नहीं होना चाहिए। यदि कोई मूल्य लापता है (उदाहरण के लिए, यदि आपको ऑडियो फ़ाइल को लंबा करने की आवश्यकता है) , 0's की एक श्रृंखला का उपयोग करें जो सही मौन के रूप में व्याख्या की जाएगी।
  • कबERDDAP™ऑडियो फ़ाइलों से डेटा पढ़ता है, यह हमेशा एक स्तंभ बनाता है जिसे छोड़ दिया जाता है प्रत्येक नमूना के लिए समय के साथ, सेकंड में (डबल के रूप में संग्रहीत) , पहले नमूने के सापेक्ष (जिसे सौंपा गया है elapsed समय=0.0 s) । साथEDDGridFromAudioFiles, यह elapsedTime अक्ष चर हो जाता है।
  • EDDGridFromAudioFiles की आवश्यकता है कि सभी फ़ाइलों के नमूने समान हैं। तो अगर यह सच नहीं है, तो आपको EDDTableFromAudioFiles का उपयोग करना होगा।
  • के लिएEDDGridFromAudioFiles, हम अनुशंसा करते हैं कि आप सेट करें<आयामValuesInMemory> (#dimensionvaluesinmemory) झूठी (जैसा कि जेनरेटडाटासेट द्वारा अनुशंसित है एक्सएमएल) क्योंकि समय आयाम अक्सर मूल्यों की एक बड़ी संख्या है।
  • के लिएEDDGridFromAudioFiles, आपको लगभग हमेशा उपयोग करना चाहिएEDDGridसेफाइल्स सिस्टम के लिएद्वारा एकत्रीकरण फ़ाइल का नाम, लगभग हमेशा रिकॉर्डिंग की शुरुआत की तारीख को निकालकर फ़ाइल नाम से समय। उदाहरण के लिए,
    <sourceName>\\*\\*\\*fileName,"timeFormat=yyyyMMdd'\\_'HHmmss",aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>

जनगणना एक्सएमएल इस को प्रोत्साहित करेगा और इससे आपकी मदद करेगा।

  • EDDTableFromAudioFiles के लिए, आपको लगभग हमेशा EDDTableFromFiles प्रणाली का उपयोग करना चाहिए\\\* फ़ाइलनाम छद्मsourceNamesफ़ाइल के नाम से जानकारी निकालने के लिए (प्रारंभ तिथि रिकॉर्डिंग के लिए समय) और इसे डेटा का एक स्तंभ माना जाता है। उदाहरण के लिए,
    <sourceName>\\*\\*\\*fileName,aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>

इसके बाद समय प्रारूप को इकाइयों के रूप में निर्दिष्ट किया जाना चाहिए:<Att name="units"> YyMMdd'\_'HHmms</att>  

EDDGridFromMergeIRFiles

EDDGridFromMergeIRFiles स्थानीय से डेटा एकत्र करनामर्जीफ़ाइलें, जो से हैंउष्णकटिबंधीय वर्षा मापने मिशन (TRMM) , जो नासा और जापान एयरोस्पेस अन्वेषण एजेंसी के बीच एक संयुक्त मिशन है (जक्सा) । मर्ज IR फ़ाइलों से डाउनलोड किया जा सकता हैनासा

EDDGridFromMergeIRFiles.java को लिखा गया और योगदान दिया गया था।ERDDAP™प्रोजेक्ट बाय जोनाथन लाफाइट एंड फिलिप मकोव्स्की ऑफ आर.टेक इंजीनियरिंग (लाइसेंस: कॉपीराइट ओपन सोर्स) ।

EDDGridFromMergeIRFiles is a little:

  • EDDGridसेMergeIRFiles संपीड़ित या uncompressed स्रोत डेटा फ़ाइलों का समर्थन करता है, किसी भी संयोजन में, एक ही डेटासेट में। यह आपको अनुमति देता है, उदाहरण के लिए, पुरानी फ़ाइलों को संपीड़ित करने के लिए जो शायद ही कभी एक्सेस किए जाते हैं, लेकिन उन नई फ़ाइलों को अनकंप्रेस करें जो अक्सर एक्सेस किए जाते हैं। या, आप मूल से संपीड़न के प्रकार को बदल सकते हैं। उदाहरण के लिए,.gz।
  • यदि आप एक ही निर्देशिका में उसी डेटा फ़ाइलों के संकुचित और असंपीड़ित संस्करण हैं, तो कृपया सुनिश्चित करें कि आप एक ही निर्देशिका में उसी डेटा फ़ाइलों के संकुचित और असंपीड़ित संस्करण हैं।<अपने डेटासेट के लिए फ़ाइलNameRegex> उस फ़ाइल नाम से मेल खाता है जिसे आप चाहते हैं कि वह मिलान करें और फ़ाइल नामों से मेल नहीं खाता है कि आप इसे मैच नहीं करना चाहते हैं।
  • Uncompressed स्रोत डेटा फ़ाइलों में फ़ाइल एक्सटेंशन नहीं होना चाहिए (i.e., फ़ाइल नाम में कोई "." नहीं) ।
  • संपीड़ित स्रोत डेटा फ़ाइलों में फ़ाइल एक्सटेंशन होना चाहिए, लेकिनERDDAP™फ़ाइल की सामग्री का निरीक्षण करके संपीड़न के प्रकार को निर्धारित करता है, न कि फ़ाइल के फ़ाइल एक्सटेंशन को देख (उदाहरण के लिए, ".Z") । समर्थित संपीड़न प्रकारों में "gz", "bzip2", "xz", "lzma", "snappy-raw", "snappy-framed", "pack200", और "z" शामिल हैं। कबERDDAP™संपीड़ित फ़ाइलों को पढ़ा जाता है, यह एक अस्थायी फ़ाइल को लिखने के बिना, ऑन-द-फ्लाई को रोकता है।
  • सभी स्रोत डेटा फ़ाइलों को मूल फ़ाइल नामकरण प्रणाली का उपयोग करना चाहिए: यानी, merg \_ YYYMMDDH 4km पिक्सेल (कहाँ YYYMMDDH फ़ाइल में डेटा से जुड़े समय को इंगित करता है) यदि फ़ाइल संकुचित हो जाती है, तो फ़ाइल एक्सटेंशन भी साथ ही।

इस वर्ग के सुपरक्लास को देखें,EDDGridसेफिलसामान्य जानकारी के लिए, यह कैसे काम करता है और इसका उपयोग कैसे किया जाता है।

हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।  

EDDGridFromNcFiles

EDDGridFromNcFiles स्थानीय, ग्रिड से डेटा एकत्र करनाGRIB .grb और .grb2फ़ाइलें,HDF (v4 or v5) .hdfफ़ाइलें,.ncएमएलफ़ाइलें,NetCDF (v3) .ncफ़ाइलें, औरजैरफ़ाइलें (संस्करण 2.25) । Zarr फ़ाइलों में थोड़ा अलग व्यवहार होता है और या तो फ़ाइलNameRegex या pathRegex को "zarr" शामिल करने की आवश्यकता होती है।

यह अन्य फ़ाइल प्रकारों के साथ काम कर सकता है (उदाहरण के लिए, BUFR) , हम सिर्फ यह परीक्षण नहीं किया है - कृपया हमें कुछ नमूना फ़ाइलों को भेजें।

  • GRIB फ़ाइलों के लिए,ERDDAP™एक .gbx सूचकांक फ़ाइल बनाने के लिए पहली बार यह प्रत्येक GRIB फ़ाइल पढ़ा होगा। इसलिए GRIB फ़ाइलों को एक निर्देशिका में होना चाहिए जहां "उपयोगकर्ता" जो टॉमकैट को चलाने के लिए + लिखने की अनुमति है।
  • इस वर्ग के सुपरक्लास को देखें,EDDGridसेफिलयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।
  • शुरूERDDAP™v2.12,EDDGridFromNcFiles and fromNcFiles.EDDGridFromNcFiles अनपैक्ड में "संरचना" से डेटा पढ़ सकते हैं.nc4 और 4.hdf4 फाइलें। एक चर की पहचान करने के लिए जो एक संरचना से है,<sourceName> प्रारूप का उपयोग करना चाहिए: पूर्ण संरचनानाम | सदस्यनाम , उदाहरण के लिए समूह1/myStruct|मेरा सदस्य
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।

ग्रिडड एनसी फाइल्स में समूह

Netcdf4 फ़ाइलों में समूह शामिल हो सकते हैं। ERDDAP™केवल एक समूह और उसके सभी मूल समूहों में चर से डेटासेट बनाता है। आप GenerateDatasets में एक विशिष्ट समूह का नाम निर्दिष्ट कर सकते हैं एक्सएमएल (ट्रेलिंग स्लैश को छोड़ दें) जेनरेटडाटासेट करने के लिए "" का उपयोग करें Xml उन चरों के लिए सभी समूहों की खोज करते हैं जो सबसे अधिक आयामों का उपयोग करते हैं, या " का उपयोग करते हैं\[जड़\]"GenDatasets सिर्फ जड़ समूह में चर के लिए देखने के लिए।

पहली चीज GenDatasetsXml इस प्रकार के डेटासेट के लिए करता है जब आप जवाब देते हैं तो सवाल नमूना फ़ाइल की एनसीडंप जैसी संरचना को प्रिंट करता है। तो अगर आप जनरेटडाटासेट के माध्यम से पहले पाश के लिए कुछ गौफी जवाब में प्रवेश करते हैं Xml, कम से कम आप देख सकते हैं कि क्याERDDAP™फ़ाइल को पढ़ सकते हैं और देख सकते हैं कि कौन से आयाम और चर फाइल में हैं। फिर आप जेनरेटडाटासेटएक्सएमएल के माध्यम से दूसरे लूप के लिए बेहतर जवाब दे सकते हैं।

EDDGridसे NcFilesUnpacked

EDDGridसे NcFilesUnpacked का एक प्रकार हैEDDGridFromNcFilesजो स्थानीय, ग्रिड से डेटा एकत्र करता हैNetCDF (v3) .ncऔर संबंधित फ़ाइलें। अंतर यह है कि यह वर्ग पहले प्रत्येक डेटा फ़ाइल को अनपैक करता हैEDDGridFromFiles फ़ाइलों को देखता है:

  • यह उन चर को अनपैक करता है जो पैक किए जाते हैंscale\_factorऔर/oradd\_offset
  • यह \_FillValue परिवर्तित करता है औरmissing\_valueNAN का मान (Integer डेटा प्रकार के लिए या Max \_VALUE) ।
  • यह समय और समय-समय पर मूल्यों को परिवर्तित करता है"seconds since 1970-01-01T00:00:00Z"।

इस वर्ग का बड़ा लाभ यह है कि यह विभिन्न मूल्यों के साथ सौदा करने का एक तरीका प्रदान करता है।scale\_factor,add\_offset, \_FillValue,missing\_valueएक संग्रह में विभिन्न स्रोत फ़ाइलों में या समय इकाइयों। अन्यथा, आपको एक उपकरण का उपयोग करना होगा जैसेएनसीएमएलयाNCOप्रत्येक फ़ाइल को अंतर को हटाने के लिए संशोधित करने के लिए ताकि फ़ाइलों को नियंत्रित किया जा सकेEDDGridसेंकिअल इस वर्ग के लिए ठीक से काम करने के लिए, फ़ाइलों को संबंधित विशेषताओं के लिए CF मानकों का पालन करना चाहिए।

  • यदि कोशिश करनाEDDGridFromNcFiles फ़ाइलों के एक समूह से अनपैक किया गया जिसके साथ आपने पहले कोशिश की और उपयोग करने में विफल रहा।EDDGridसे NcFiles, सीडी करने के लिए बड़ाParentDirectory /dataset/ Last2Letters / datasetID / कहाँ Last2Letters अंतिम 2 अक्षर हैdatasetID, और उस निर्देशिका में सभी फ़ाइलों को हटा दें।
  • शुरूERDDAP™v2.12,EDDGridFromNcFiles and fromNcFiles.EDDGridFromNcFiles अनपैक्ड में "संरचना" से डेटा पढ़ सकते हैं.nc4 और 4.hdf4 फाइलें। एक चर की पहचान करने के लिए जो एक संरचना से है,<sourceName> प्रारूप का उपयोग करना चाहिए: पूर्ण संरचनानाम | सदस्यनाम , उदाहरण के लिए समूह1/myStruct|मेरा सदस्य
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।

Netcdf4 फ़ाइलों में समूह शामिल हो सकते हैं। देखेंयह दस्तावेज़ीकरण

पहली चीज GenDatasetsXml इस प्रकार के डेटासेट के लिए करता है जब आप जवाब देते हैं तो सवाल नमूना फ़ाइल की एनसीडंप जैसी संरचना को प्रिंट करता है। पहले यह unpacked है। तो अगर आप जनरेटडाटासेट के माध्यम से पहले पाश के लिए कुछ goofy जवाब में प्रवेश करते हैं Xml, कम से कम आप देख सकते हैं कि क्याERDDAP™फ़ाइल को पढ़ सकते हैं और देख सकते हैं कि कौन से आयाम और चर फाइल में हैं। फिर आप जेनरेटडाटासेटएक्सएमएल के माध्यम से दूसरे लूप के लिए बेहतर जवाब दे सकते हैं।

EDDGridLonPM180

EDDGridLonPM180 एक बच्चे के अक्षांश मूल्यों को संशोधित करता है (संलग्न) EDDGridडेटासेट जिसमें 180 से अधिक से अधिक लम्बाई मान होते हैं (उदाहरण के लिए, 0 से 360) इतना है कि वे रेंज में हैं -180 से 180 (Longitude Plus or Minus 180, इसलिए इसका नाम) ।

  • यह डेटासेट बनाने का एक तरीका प्रदान करता है जिसमें 180 से अधिक अनुरूप/साथ लंबे समय तक मूल्य होते हैं।OGCसेवाएं (उदाहरण के लिएWMSसर्वरERDDAP) सबके बादOGCसेवाओं को 180 से 180 के भीतर लम्बाई मान की आवश्यकता होती है।
  • असंतुष्टता के पास काम करने से समस्याएं होती हैं, चाहे वह असंतुष्टता 0 या 180 के अक्षांश पर हो। यह डेटासेट प्रकार आपको उसी डेटासेट के दो संस्करणों की पेशकश करके हर किसी के लिए उन समस्याओं से बचने देता है: रेंज 0 से 360 में लम्बाई मान के साथ ("Pacificentric"?) , रेंज -180 से 180 ("Atlanticentric"?) ।
  • 180 से अधिक सभी देशांतर मूल्यों के साथ चाइल्ड डेटासेट के लिए, सभी नए देशांतर मान केवल 360 डिग्री कम हैं। उदाहरण के लिए, 180 से 240 के अक्षांश मान के साथ एक डेटासेट -180 से -120 के अक्षांश मान के साथ डेटासेट बन जाएगा।
  • बाल डेटासेट के लिए जो पूरे ग्लोब के लिए अक्षांश मान है (मोटे तौर पर 0 से 360) , नए देशांतर मूल्य को पुनर्निर्मित किया जाएगा (मोटे तौर पर) -180 से 180: मूल 0 से लगभग 180 मान अपरिवर्तित हैं। मूल 180 से 360 मानों को -180 से 0 में परिवर्तित किया जाता है और देशांतर सरणी की शुरुआत में स्थानांतरित किया जाता है।
  • बच्चे के डेटासेट के लिए जो 180 स्पैन होते हैं लेकिन ग्लोब को कवर नहीं करते हैं,ERDDAP™एक डेटासेट बनाने की आवश्यकता के रूप में लापता मान डालें जो दुनिया को कवर करता है। उदाहरण के लिए, 140 से 200 के अक्षांश मान के साथ एक बच्चा डेटासेट -180 से 180 के अक्षांश मान के साथ एक डेटासेट बन जाएगा। 180 से 200 के बच्चे का मूल्य -180 से -160 हो जाएगा। नए देशांतर मूल्यों को -160 से 140 तक डाला जाएगा। संबंधित डेटा मान \_FillValues होगा। 140 से लगभग 180 के बच्चे का मूल्य अपरिवर्तित होगा। लापता मूल्यों का सम्मिलन अजीब लग सकता है, लेकिन यह कई समस्याओं से बच जाता है जिसके परिणामस्वरूप देशांतर मूल्यों को अचानक कूदना पड़ता है। (उदाहरण के लिए, -160 से 140) ।
  • मेंजनरेट DatasetXml, एक विशेष "डेटासेट प्रकार" है,EDDGridLonPM180FromErddapCatalog, जो आपको उत्पन्न करने देता हैdatasets.xmlके लिएEDDGridप्रत्येक से LonPM180 डेटासेटEDDGridएक में डेटासेटERDDAPइसमें 180 से अधिक लम्बाई मान होते हैं। यह इन डेटासेट के दो संस्करणों की पेशकश की सुविधा देता है: मूल, सीमा 0 से 360 में अक्षांश मान के साथ, और नए डेटासेट, रेंज -180 से 180 में देशांतर मूल्यों के साथ।

प्रत्येक के भीतर बच्चा डेटासेटEDDGridLonPM180 डेटासेट एक होगाEDDGridFromErddap dataset जो मूल डेटासेट को इंगित करता है। नया डेटासेटdatasetIDमूल डेटासेट प्लस "\_LonPM180" का नाम होगा। उदाहरण के लिए,

    <dataset type="EDDGridLonPM180" datasetID="erdMBsstdmday\\_LonPM180" active="true">
<dataset type="EDDGridFromErddap" datasetID="erdMBsstdmday\\_LonPM180Child">
<!-- SST, Aqua MODIS, NPP, 0.025 degrees, Pacific Ocean, Daytime
(Monthly Composite) minLon=120.0 maxLon=320.0 -->
<sourceUrl>https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdMBsstdmday
</sourceUrl>
</dataset>
</dataset>

रखनाEDDGridLonPM180 डेटासेट नीचे में मूल डेटासेटdatasets.xml। यह कुछ संभावित समस्याओं से बचा है।

वैकल्पिक रूप से, आप बदल सकते हैंEDDGridमूल डेटासेट के साथ Erddap बच्चे डेटासेट सेdatasets.xml। फिर, डेटासेट का केवल एक संस्करण होगा: एक -180 से 180 के भीतर देशांतर मूल्यों के साथ। जब डेटासेट का प्रत्येक संस्करण अधिक सुविधाजनक होता है तो हम इसे हतोत्साहित करते हैं।

  • यदि आप एक डेटासेट के दो संस्करणों की पेशकश करते हैं, उदाहरण के लिए, एक अक्षांश 0 से 360 और एक के साथ देशांतर -180 से 180:
    • आप वैकल्पिक उपयोग कर सकते हैं [<सुलभ वायाWMS> झूठ<स्वीकार्य वायाWMS> (#accessibleviawms) 0-360 डेटासेट के साथ to forcibly निष्क्रियWMSउस डेटासेट के लिए सेवा। फिर, केवल डेटासेट का LonPM180 संस्करण सुलभ होगाWMS।
    • अंतर्निहित डेटासेट में परिवर्तन के साथ LonPM180 डेटासेट अप-टू-डेट रखने के कुछ तरीके हैं:
      • यदि बच्चा डेटासेट एक हैEDDGridFromErddap डेटासेट जो एक ही डेटासेट को संदर्भित करता हैERDDAP™, LonPM180 डेटासेट सीधे अंतर्निहित डेटासेट की सदस्यता लेने की कोशिश करेगा ताकि यह हमेशा अद्यतन हो। प्रत्यक्ष सदस्यता ईमेल उत्पन्न नहीं करते हैं जो आपको सदस्यता को मान्य करने के लिए कहते हैं - सत्यापन स्वचालित रूप से किया जाना चाहिए।
      • यदि बच्चा डेटासेट नहीं हैEDDGridFromErddap dataset that is on the same.ERDDAP™, LonPM180 डेटासेट अंतर्निहित डेटासेट की सदस्यता के लिए नियमित सदस्यता प्रणाली का उपयोग करने की कोशिश करेगा। यदि आपके पास आपकी सदस्यता प्रणाली हैERDDAP™बदल गया, आपको ईमेल प्राप्त करना चाहिए जो आपको सदस्यता को मान्य करने के लिए कहता है। कृपया ऐसा करें।
      • यदि आपके पास आपकी सदस्यता प्रणाली हैERDDAP™बंद कर दिया, LonPM180 डाटासेट कभी कभी मेटाडाटा outdated हो सकता है जब तक LonPM180 डाटासेट reloaded है। तो अगर सदस्यता प्रणाली बंद हो जाती है, तो आपको सेट करना चाहिए [<रीलोड हरNMinutes (#reloadeverynminutes) एक छोटी संख्या में LonPM180 डेटासेट की सेटिंग, ताकि जल्द ही बच्चे के डेटासेट में बदलाव की संभावना बढ़ सके।

EDDGridLonPM180 कंकाल एक्सएमएल

  <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 एक बच्चे के अक्षांश मूल्यों को संशोधित करता है (संलग्न) EDDGridडेटासेट जिसमें कुछ हद तक मान 0 से कम है (उदाहरण के लिए -180 से 180) ताकि वे 0 से 360 रेंज में हों (इसलिए नाम) ।

  • असंतुष्टता के पास काम करने से समस्याएं होती हैं, चाहे वह असंतुष्टता 0 या 180 के अक्षांश पर हो। यह डेटासेट प्रकार आपको उसी डेटासेट के दो संस्करणों की पेशकश करके हर किसी के लिए उन समस्याओं से बचने देता है: रेंज -180 से 180 ("Atlanticentric"?) । रेंज 0 से 360 में लम्बाई मान के साथ ("Pacificentric"?) ,
  • 0 से कम सभी देशांतर मूल्यों के साथ चाइल्ड डेटासेट के लिए, सभी नए देशांतर मान केवल 360 डिग्री अधिक हैं। उदाहरण के लिए, -180 से -120 के अक्षांश मान के साथ एक डेटासेट 180 से 240 के अक्षांश मान के साथ एक डेटासेट बन जाएगा।
  • बाल डेटासेट के लिए जो पूरे ग्लोब के लिए अक्षांश मान है (मोटे तौर पर -180 से 180) , नए देशांतर मूल्य को पुनर्निर्मित किया जाएगा (मोटे तौर पर) 0 से 360: मूल -180 से 0 मान 180 से 360 में परिवर्तित होते हैं और देशांतर सारणी के अंत में स्थानांतरित होते हैं। मूल 0 से लगभग 180 मान अपरिवर्तित हैं।
  • बच्चे के डेटासेट के लिए जो lon = 0 स्पैन करते हैं लेकिन ग्लोब को कवर नहीं करते हैं,ERDDAP™एक डेटासेट बनाने की आवश्यकता के रूप में लापता मान डालें जो दुनिया को कवर करता है। उदाहरण के लिए, -40 से 20 के अक्षांश मान के साथ एक बच्चा डेटासेट 0 से 360 के अक्षांश मान के साथ एक डेटासेट बन जाएगा। 0 से 20 के बच्चे का मूल्य अपरिवर्तित होगा। 20 से 320 तक नए देशांतर मूल्यों को सम्मिलित किया जाएगा। संबंधित डेटा मान \_FillValues होगा। -40 से 0 के बच्चे का मूल्य 320 से 360 हो जाएगा। लापता मूल्यों का सम्मिलन अजीब लग सकता है, लेकिन यह कई समस्याओं से बच जाता है जिसके परिणामस्वरूप देशांतर मूल्यों को अचानक कूदना पड़ता है। (उदाहरण के लिए, 20 से 320 तक) ।
  • मेंजनरेट DatasetXml, एक विशेष "डेटासेट प्रकार" है,EDDGridLon0360From ErddapCatalog, जो आपको उत्पन्न करने देता हैdatasets.xmlके लिएEDDGridप्रत्येक से Lon0360 डेटासेटEDDGridएक में डेटासेटERDDAPइसमें 180 से अधिक लम्बाई मान होते हैं। यह इन डेटासेट के दो संस्करणों की पेशकश की सुविधा देता है: मूल, सीमा 0 से 360 में अक्षांश मान के साथ, और नए डेटासेट, रेंज -180 से 180 में देशांतर मूल्यों के साथ।

प्रत्येक के भीतर बच्चा डेटासेटEDDGridLon0360 डेटासेट एक होगाEDDGridFromErddap dataset जो मूल डेटासेट को इंगित करता है। नया डेटासेटdatasetIDमूल डेटासेट प्लस "\_Lon0360" का नाम होगा। उदाहरण के लिए,

    <dataset type="EDDGridLon0360" datasetID="erdMBsstdmday\\_Lon0360" active="true">
<dataset type="EDDGridFromErddap" datasetID="erdMBsstdmday\\_Lon0360Child">
<!-- SST, Aqua MODIS, NPP, 0.025 degrees, Pacific Ocean, Daytime
(Monthly Composite) minLon=-40.0 maxLon=20.0 -->
<sourceUrl>https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdMBsstdmday
</sourceUrl>
</dataset>
</dataset>

रखनाEDDGridLon0360 डेटासेट नीचे में मूल डेटासेटdatasets.xml। यह कुछ संभावित समस्याओं से बचा है।

वैकल्पिक रूप से, आप बदल सकते हैंEDDGridमूल डेटासेट के साथ Erddap बच्चे डेटासेट सेdatasets.xml। फिर, डेटासेट का केवल एक संस्करण होगा: 0 से 360 के भीतर देशांतर मूल्यों वाला एक। जब डेटासेट का प्रत्येक संस्करण अधिक सुविधाजनक होता है तो हम इसे हतोत्साहित करते हैं।

  • यदि आप एक डेटासेट के दो संस्करणों की पेशकश करते हैं, उदाहरण के लिए, एक अक्षांश 0 से 360 और एक के साथ देशांतर -180 से 180:
    • आप वैकल्पिक उपयोग कर सकते हैं [<सुलभ वायाWMS> झूठ<स्वीकार्य वायाWMS> (#accessibleviawms) 0 से 360 डेटासेट के साथ to forcibly निष्क्रियWMSउस डेटासेट के लिए सेवा। फिर, डेटासेट का केवल -180 से 180 संस्करण सुलभ होगाWMS।
    • अंतर्निहित डेटासेट में परिवर्तन के साथ Lon0360 डेटासेट अप-टू-डेट रखने के कुछ तरीके हैं:
      • यदि बच्चा डेटासेट एक हैEDDGridFromErddap डेटासेट जो एक ही डेटासेट को संदर्भित करता हैERDDAP™, Lon0360 डेटासेट सीधे अंतर्निहित डेटासेट की सदस्यता लेने की कोशिश करेगा ताकि यह हमेशा अद्यतन हो। प्रत्यक्ष सदस्यता ईमेल उत्पन्न नहीं करते हैं जो आपको सदस्यता को मान्य करने के लिए कहते हैं - सत्यापन स्वचालित रूप से किया जाना चाहिए।
      • यदि बच्चा डेटासेट नहीं हैEDDGridFromErddap dataset that is on the same.ERDDAP™, Lon0360 डेटासेट अंतर्निहित डेटासेट की सदस्यता के लिए नियमित सदस्यता प्रणाली का उपयोग करने की कोशिश करेगा। यदि आपके पास आपकी सदस्यता प्रणाली हैERDDAP™बदल गया, आपको ईमेल प्राप्त करना चाहिए जो आपको सदस्यता को मान्य करने के लिए कहता है। कृपया ऐसा करें।
      • यदि आपके पास आपकी सदस्यता प्रणाली हैERDDAP™बंद कर दिया गया, Lon0360 डेटासेट कभी कभी मेटाडाटा outdated हो सकता है जब तक Lon0360 डाटासेट reloaded है। तो अगर सदस्यता प्रणाली बंद हो जाती है, तो आपको सेट करना चाहिए [<रीलोड हरNMinutes (#reloadeverynminutes) Lon0360 डेटासेट की एक छोटी संख्या में सेटिंग, ताकि जल्द ही बच्चे के डेटासेट में बदलाव की संभावना बढ़ सके।

EDDGridLon0360 कंकाल एक्सएमएल

  <dataset type="EDDGridLon0360" datasetID\="..." active\="..." >
      <reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
      <updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
        EDDGridFromDap, this gets the remote .dds and then gets the new
        leftmost (first) dimension values. -->
      <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
      <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
      <accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
      <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
      <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
      <nThreads>...</nThreads> <!-- 0 or 1 -->
      <dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
      <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
      <iso19115File>...</iso19115File> <!-- 0 or 1 -->
      <onChange>...</onChange> <!-- 0 or more -->
      <dataset>...</dataset> <!-- The child EDDGrid dataset. -->
  </dataset>

EDDGridसाइडबायसाइड

EDDGridसाइडबायसाइड दो या अधिकEDDGridडेटासेट (बच्चे) पक्ष में।

  • परिणामस्वरूप डेटासेट में सभी बच्चे डेटासेट से सभी चर हैं।
  • माता-पिता डेटासेट और सभी बच्चे डेटासेट MUST अलग हैdatasetIDS. यदि किसी परिवार में कोई नाम बिल्कुल समान है, तो डेटासेट लोड होने में विफल हो जाएगा (त्रुटि संदेश के साथ कि कुल अक्ष के मान क्रमबद्ध क्रम में नहीं हैं) ।
  • सभी बच्चों के लिए MUST के समान स्रोत मान हैंaxisVariables\[1+\] (उदाहरण के लिए, अक्षांश, देशांतर) । परीक्षण की परिशुद्धता द्वारा निर्धारित की जाती हैमैच AxisNDigits
  • बच्चों के पास विभिन्न स्रोत मान हो सकते हैंaxisVariables\[0\] (उदाहरण के लिए, समय) लेकिन वे आम तौर पर काफी हद तक समान होते हैं।
  • माता-पिता डेटासेट सभी के पास दिखाई देगाaxisVariables\[0\]सभी बच्चों से स्रोत मान।
  • उदाहरण के लिए, यह आपको वेक्टर के u-component और एक अन्य स्रोत डेटासेट के साथ एक स्रोत डेटासेट को एक वेक्टर के v-component के साथ जोड़ती है, इसलिए संयुक्त डेटा परोसा जा सकता है।
  • इस विधि द्वारा निर्मित बच्चे निजी तौर पर आयोजित किए जाते हैं। वे अलग से सुलभ डेटासेट नहीं हैं (उदाहरण के लिए, ग्राहक डेटा अनुरोधों या द्वाराझंडा फाइलें) ।
  • वैश्विक मेटाडाटा और माता-पिता के लिए सेटिंग्स वैश्विक मेटाडाटा और पहले बच्चे के लिए सेटिंग्स से आता है।
  • यदि पहले बच्चे का निर्माण करते समय अपवाद होता है, तो माता-पिता का निर्माण नहीं किया जाएगा।
  • यदि अन्य बच्चे पैदा करते समय अपवाद है, तो यह ईमेल करने के लिए एक ईमेल भेजता है (यथा निर्दिष्टसाइटमैप) और अन्य बच्चों के साथ जारी रहता है।

EDDGridसाइडबायसाइड कंकाल एक्सएमएल

  <dataset type="EDDGridSideBySide" datasetID\="..." active\="..." >
      <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
      <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
      <accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
      <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
      <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
      <matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
      <nThreads>...</nThreads> <!-- 0 or 1 -->
      <dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
      <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
      <iso19115File>...</iso19115File> <!-- 0 or 1 -->
      <onChange>...</onChange> <!-- 0 or more -->
      <dataset>...</dataset> <!-- 2 or more -->
  </dataset>

EDDGridसमग्र आयाम

EDDGridसमग्र आयाम दो या अधिकEDDGridउनमें से प्रत्येक में पहले आयाम के लिए मूल्यों की एक अलग श्रृंखला है, लेकिन अन्य आयामों के लिए समान मान।

  • उदाहरण के लिए, एक चाइल्ड डेटासेट में 366 मान हो सकते हैं (2004 के लिए) समय आयाम और दूसरे बच्चे के लिए 365 मान हो सकते हैं (2005 के लिए) समय आयाम के लिए।
  • अन्य सभी आयामों के लिए सभी मान (उदाहरण के लिए, अक्षांश, देशांतर) MUST सभी बच्चों के लिए समान है। परीक्षण की परिशुद्धता द्वारा निर्धारित की जाती हैमैच AxisNDigits
  • क्रमबद्ध आयाम मान - प्रत्येक आयाम के लिए मान को क्रमबद्ध क्रम में होना चाहिए (चढ़ना या उतरना) । मूल्यों को अनियमित रूप से स्पेस किया जा सकता है। कोई संबंध नहीं हो सकता है। यह आवश्यकता हैCF मेटाडाटा मानक। यदि किसी भी आयाम के मान क्रमबद्ध क्रम में नहीं हैं, तो डेटासेट को लोड नहीं किया जाएगा और लोड नहीं किया जाएगा।ERDDAP™लॉग फाइल में प्रथम अनॉर्टेड मान की पहचान करेगा, बड़ाParentDirectory /logs/log.txt।

Unsorted आयाम मान लगभग हमेशा स्रोत डेटासेट के साथ एक समस्या का संकेत देते हैं। यह आमतौर पर तब होता है जब एकत्रीकरण में एक गलतनाम या अनुचित फ़ाइल शामिल की जाती है, जिससे एक अनधिकृत समय आयाम होता है। इस समस्या को हल करने के लिए त्रुटि संदेश देखेंERDDAP™लॉग.txt फ़ाइल को ऑफेंडिंग टाइम वैल्यू खोजने के लिए। फिर संबंधित फ़ाइल खोजने के लिए स्रोत फ़ाइलों को देखें (पहले या एक के बाद) यह एकत्रीकरण में नहीं है।

  • माता-पिता डेटासेट और बच्चे डेटासेट MUST अलग हैdatasetIDS. यदि किसी परिवार में कोई नाम बिल्कुल समान है, तो डेटासेट लोड होने में विफल हो जाएगा (त्रुटि संदेश के साथ कि कुल अक्ष के मान क्रमबद्ध क्रम में नहीं हैं) ।
  • वर्तमान में, चाइल्ड डेटासेट एक होना चाहिएEDDGridFromDap dataset और MUST में कुल आयाम का सबसे कम मान है (आमतौर पर सबसे पुराना समय मान) । अन्य सभी बच्चे MUST लगभग समान डेटासेट हो सकते हैं (पहले आयाम के लिए मूल्यों में सिर्फ भिन्न) और सिर्फ उनके द्वारा निर्दिष्ट कर रहे हैंsourceUrl।
  • कुल डेटासेट को पहले बच्चे से अपना मेटाडाटा मिलता है।
  • The The most of theजनगणना Xml कार्यक्रमकिसी न किसी प्रारूप का निर्माण कर सकते हैंdatasets.xmlके लिएEDDGridकुल मौजूदा आयाम एक द्वारा सेवा की गई फ़ाइलों के एक सेट के आधार परHyraxया THREDDS सर्वर। उदाहरण के लिए, कार्यक्रम के लिए इस इनपुट का उपयोग करें (यूआरएल में "/1988" उदाहरण तेजी से चल रहा है) :
      EDDType? EDDGridAggregateExistingDimension  
      Server type (hyrax, thredds, or dodsindex)? hyrax
      Parent URL (for example, for hyrax, ending in "contents.html";
        for thredds, ending in "catalog.xml")
      ? https://opendap.jpl.nasa.gov/opendap/ocean\\_wind/ccmp/L3.5a/data/
        flk/1988/contents.html
      File name regex (for example, ".\\*\\.nc")? month.\\*flk\\.nc\\.gz
      ReloadEveryNMinutes (for example, 10080)? 10080

आप परिणामस्वरूप का उपयोग कर सकते हैं<sourceUrl> टैग या उन्हें हटाने और uncommented<sourceUrl> टैग (जैसा कि प्रत्येक बार नई फ़ाइलों को डेटासेट रीलोड किया जाता है)।

EDDGridकुल मिलाकर आयाम कंकाल एक्सएमएल

  <dataset type="EDDGridAggregateExistingDimension" datasetID\="..."
        active\="..." >
      <dataset>...</dataset> <!-- This is a regular EDDGridFromDap dataset
        description child with the lowest values for the aggregated
        dimensions. -->
      <sourceUrl>...</sourceUrl> <!-- 0 or many; the sourceUrls for
        other children. These children must be listed in order of
        ascending values for the aggregated dimension. -->
      <sourceUrls serverType="..." regex="..." recursive="true"
        pathRegex\=".\"
        >https://someServer/someDirectory/someSubdirectory/catalog.xml</sourceUrls>
        <!-- 0 or 1. This specifies how to find the other children,
        instead of using separate sourceUrl tags for each child. The
        advantage of this is: new children will be detected each time
        the dataset is reloaded. The serverType must be "thredds",
        "hyrax", or "dodsindex".         An example of a regular expression (regex) (tutorial) is .\
\.nc
        recursive can be "true" or "false".
        Only directory names which match the
        <pathRegex>
        (default=".\*") will be accepted.
        A thredds catalogUrl MUST include "/thredds/catalog/".
        An example of a thredds catalogUrl is
        https://thredds1.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/
          chla/catalog.xml

        An example of a hyrax catalogUrl is
        https://opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/
        flk/1988/contents.html

        An example of a dodsindex URL is
        https://opendap.jpl.nasa.gov/opendap/GeodeticsGravity/tellus/L3/mascon/RL06/JPL/v02/CRI/netcdf/contents.html
        (Note the "OPeNDAP logo at the top of the page.)
        When these children are sorted by filename, they must be in
        order of ascending values for the aggregated dimension. -->
      <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
      <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
      <accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
      <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
      <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
      <matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
      <nThreads>...</nThreads> <!-- 0 or 1 -->
      <dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
      <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
      <iso19115File>...</iso19115File> <!-- 0 or 1 -->
      <onChange>...</onChange> <!-- 0 or more -->
  </dataset>

EDDGridकॉपी

EDDGridकॉपी किसी अन्य की स्थानीय प्रति बनाता है और बनाए रखता हैEDDGrid's डेटा और स्थानीय प्रतिलिपि से डेटा कार्य करता है।

  • EDDGridकॉपी (और सारणीबद्ध डेटा के लिए,EDDTableCopy) उपयोग करना बहुत आसान है और एक बहुत प्रभावी है दूरस्थ डेटा स्रोत से डेटा की सेवा के साथ कुछ सबसे बड़ी समस्याओं का समाधान:
    • दूरस्थ डेटा स्रोत से डेटा तक पहुंच धीमी हो सकती है।
      • यह धीमा हो सकता है क्योंकि यह स्वाभाविक रूप से धीमा है (उदाहरण के लिए, सर्वर का एक अक्षम प्रकार) ,
      • क्योंकि यह बहुत सारे अनुरोधों से अभिभूत है,
      • या क्योंकि आपका सर्वर या रिमोट सर्वर बैंडविड्थ सीमित है।
    • दूरस्थ डेटासेट कभी-कभी अनुपलब्ध है (फिर, विभिन्न कारणों के लिए) ।
    • डेटा के लिए एक स्रोत पर निर्भर करना अच्छी तरह से स्केल नहीं करता है (उदाहरण के लिए, जब कई उपयोगकर्ता और कईERDDAPइसका उपयोग) ।  
  • यह कैसे काम करता है -EDDGridप्रतिलिपि स्वचालित रूप से डेटा की एक स्थानीय प्रतिलिपि बनाने और स्थानीय प्रतिलिपि से डेटा की सेवा करके इन समस्याओं को हल करती है।ERDDAP™बहुत जल्दी स्थानीय प्रतिलिपि से डेटा की सेवा कर सकते हैं। और स्थानीय प्रतिलिपि बनाने से रिमोट सर्वर पर बोझ को राहत मिलती है। और स्थानीय प्रतिलिपि मूल का बैकअप है, जो स्थिति में कुछ मूल होता है।

डेटासेट की स्थानीय प्रतिलिपि बनाने के बारे में कुछ नया नहीं है। यहाँ नया क्या है कि यह वर्ग इसे बनाता है\*आसान\*बनाना और बनाना\*रखरखाव\*डेटा की एक स्थानीय प्रतिलिपि\*विविधता\*दूरस्थ डेटा स्रोतों के प्रकार और\*मेटाडाटा\*डेटा की प्रतिलिपि बनाते समय।

  • डेटा के चक --EDDGridप्रतिलिपि दूरस्थ से डेटा के टुकड़ों का अनुरोध करके डेटा की स्थानीय प्रतिलिपि बनाती है<डेटासेट>। बाएं के प्रत्येक मूल्य के लिए एक हिस्सा होगा (पहला) अक्ष चर।EDDGridप्रतिलिपि अक्ष के लिए दूरस्थ डेटासेट के इंडेक्स नंबर पर भरोसा नहीं करती है - वे बदल सकते हैं।

चेतावनी: यदि डेटा के एक हिस्से का आकार इतना बड़ा है (> 2GB) यह समस्या का कारण बनता है,EDDGridप्रतिलिपि का उपयोग नहीं किया जा सकता है। (Sorry, हम भविष्य में इस समस्या के लिए एक समाधान की उम्मीद है।)

  • \[विकल्पEDDGridप्रतिलिपि - यदि दूरस्थ डेटा डाउनलोड करने योग्य फ़ाइलों के माध्यम से उपलब्ध है, तो वेब सेवा नहीं, उपयोग करेंकैश FromUrl विकल्प forEDDGridसेफिल, जो दूरस्थ फ़ाइलों की एक स्थानीय प्रतिलिपि बनाता है और स्थानीय फ़ाइलों से डेटा प्रदान करता है।\]
  • स्थानीय फाइलें -- डेटा का प्रत्येक हिस्सा एक अलग में संग्रहीत किया जाता हैNetCDFएक subdirectory में फ़ाइल बड़ाParentDirectory साइटमैप datasetID / (यथा निर्दिष्टसाइटमैप) । अक्ष मानों से बनाई गई फ़ाइल नामों को उन्हें फ़ाइल नाम-सुरक्षित बनाने के लिए संशोधित किया गया है (उदाहरण के लिए, हाइफेंस को "x2D" द्वारा प्रतिस्थापित किया जाता है।) - यह वास्तविक डेटा को प्रभावित नहीं करता है।  
  • नया डेटा -- हर बारEDDGridप्रतिलिपि को पुनः लोड किया गया है, यह दूरस्थ जाँच करता है<डेटासेट> यह देखने के लिए कि कौन से हिस्से उपलब्ध हैं। यदि डेटा के एक हिस्से के लिए फ़ाइल पहले से मौजूद नहीं है, तो एक अनुरोध प्राप्त करने के लिए चंक को एक कतार में जोड़ा जाता है।ERDDAP'टास्कथ्रेड डेटा के टुकड़ों, एक-एक-एक-एक-एक-एक के लिए सभी प्रश्न अनुरोधों को संसाधित करता है। आप कार्य के लिए आंकड़े देख सकते हैंथ्रेड की गतिविधि परस्थिति पृष्ठऔर मेंदैनिक रिपोर्ट। (हाँ,ERDDAP™इस प्रक्रिया के लिए कई कार्यों को असाइन कर सकता है, लेकिन यह बहुत सारे दूरस्थ डेटा स्रोत की बैंडविड्थ, मेमोरी और सीपीयू समय का उपयोग करेगा, और स्थानीय लोगों के बहुत सारेERDDAPबैंडविड्थ, मेमोरी और सीपीयू समय, जिनमें से कोई भी अच्छा विचार नहीं है।)

ध्यान दें: पहली बारEDDGridप्रतिलिपि भरी हुई है, (अगर सब ठीक हो जाता है) डेटा के बहुत सारे अनुरोधों को टाटथ्रेड के कतार में जोड़ा जाएगा, लेकिन कोई स्थानीय डेटा फ़ाइलों का निर्माण नहीं किया जाएगा। इसलिए निर्माता विफल हो जाएगा लेकिन टास्कथ्रेड स्थानीय फ़ाइलों को काम करने और बनाने के लिए जारी रहेगा। यदि सब ठीक हो जाता है, तो टास्कथ्रेड कुछ स्थानीय डेटा फाइलें बना देगा और डेटासेट को फिर से लोड करने का अगला प्रयास करेगा। (~15 मिनट) शुरू में डेटा की एक सीमित राशि के साथ सफल होगा।

नोट: स्थानीय डेटासेट के कुछ डेटा होते हैं और आपके डेटा में दिखाई देते हैंERDDAPयदि दूरस्थ डेटासेट अस्थायी रूप से या स्थायी रूप से सुलभ नहीं है, तो स्थानीय डेटासेट अभी भी काम करेगा।

चेतावनी: यदि दूरस्थ डेटासेट बड़ा है और/या दूरस्थ सर्वर धीमी है (यह समस्या नहीं है?) , यह एक पूर्ण स्थानीय प्रतिलिपि बनाने के लिए एक लंबे समय तक ले जाएगा। कुछ मामलों में, आवश्यक समय अस्वीकार्य होगा। उदाहरण के लिए, T1 लाइन पर 1 टीबी डेटा को ट्रांसमिट करना (0.15 जीबी / एस) इष्टतम परिस्थितियों में कम से कम 60 दिन लगते हैं। इसके अलावा, यह दूरस्थ और स्थानीय कंप्यूटर पर बैंडविड्थ, मेमोरी और सीपीयू टाइम का उपयोग करता है। समाधान दूरस्थ डेटा सेट के प्रशासक को एक हार्ड ड्राइव मेल करना है ताकि वह डेटासेट की एक प्रति बना सके और हार्ड ड्राइव को आपके पास भेज सकें। उस डेटा को शुरुआती बिंदु के रूप में उपयोग करें औरEDDGridकॉपी इसमें डेटा जोड़ देगा। (यह एक रास्ता है किअमेज़न की EC2 क्लाउड सर्विसइस समस्या को संभालती है, भले ही उनके सिस्टम में बैंडविड्थ बहुत अधिक हो।)

WARNING: यदि बाएं के लिए कोई मूल्य दिया जाता है (पहला) अक्ष चर दूरस्थ डेटासेट से गायब हो जाता है,EDDGridप्रतिलिपि स्थानीय कॉपी की गई फ़ाइल को नहीं हटाती है। यदि आप चाहते हैं, तो आप इसे स्वयं हटा सकते हैं।

ग्रिड कॉपी चेकसोर्स डेटा

The The most of thedatasets.xmlइस डेटासेट के लिए एक वैकल्पिक टैग हो सकता है

    <checkSourceData>true</checkSourceData>  

डिफ़ॉल्ट मान सही है। यदि आप इसे झूठ में सेट करते हैं, तो डेटासेट कभी भी यह देखने के लिए स्रोत डेटासेट की जांच नहीं करेगा कि क्या अतिरिक्त डेटा उपलब्ध है।

केवल

आप कह सकते हैंEDDGridपूरे स्रोत डेटासेट के बजाय स्रोत डेटासेट के एक सबसेट की एक प्रति बनाने के लिए कॉपी करें, फॉर्म में एक टैग जोड़कर<एकमात्रSince> कुछ मूल्य </onlySince> डेटासेट के लिएdatasets.xmlभाग।EDDGridप्रतिलिपि केवल पहले आयाम के मूल्यों से संबंधित डेटा मानों को डाउनलोड करेगी (आमतौर पर समय आयाम) जो अधिक से अधिक है कुछ मूल्यकुछ मूल्य हो सकता है:

  • द्वारा निर्दिष्ट एक सापेक्ष समयnow- n । उदाहरण के लिए,<एकमात्रSince>now-2 साल</onlySince> डेटासेट को केवल डेटा के लिए डेटा की स्थानीय प्रतियां बनाने के लिए कहता है जहां बाहरी आयाम का मान (आमतौर पर समय मान) पिछले 2 वर्षों में हैं (जो हर बार डेटासेट को पुनः लोड किया जाता है, जो तब होता है जब यह कॉपी करने के लिए नए डेटा की तलाश करता है) । देखेंnow- n वाक्यविन्यास। यह उपयोगी है यदि पहले आयाम में टाइम डेटा होता है, जो आमतौर पर करता है।

    EDDGridप्रतिलिपि स्थानीय डेटा फ़ाइलों को नष्ट नहीं करती है, जिसमें डेटा होता है, समय के साथ, तुलना में पुराना हो जाता हैnow- n । यदि आप चुनते हैं तो आप उन फ़ाइलों को किसी भी समय हटा सकते हैं। यदि आप करते हैं, तो हम दृढ़ता से अनुशंसा करते हैं कि आप एक सेट करेंझंडाबाद में आप फ़ाइलों को हटाने के लिएEDDGridकैश्ड फ़ाइलों की सूची को अद्यतन करने के लिए कॉपी करें।

  • आईएसओ 8601 स्ट्रिंग के रूप में निर्दिष्ट समय में एक निश्चित बिंदुyyyy-MM-ddTHH:mm:ssZ। उदाहरण के लिए,<onlySince>2000-01-01T00:00:00Z</onlySince> डेटासेट को केवल डेटा की स्थानीय प्रतियां बनाने के लिए कहता है जहां पहला आयाम का मान \> = 2000-01T00:00Z है। यह उपयोगी है यदि पहले आयाम में टाइम डेटा होता है, जो आमतौर पर करता है।  

  • एक अस्थायी बिंदु संख्या। उदाहरण के लिए,<onlySince>946684800.0</onlySince>। यूनिट पहले आयाम की गंतव्य इकाई होगी। उदाहरण के लिए, समय आयाम के लिए, इकाइयों मेंERDDAP™हमेशा"seconds since 1970-01-01T00:00:00Z"। तो 946684800.0"seconds since 1970-01-01T00:00:00Z"2000-01-01T00:00Z के बराबर है। यह हमेशा एक उपयोगी विकल्प है, लेकिन विशेष रूप से उपयोगी है जब पहले आयाम में समय डेटा नहीं होता है।

EDDGridRecomended use

  1. बनाना<डेटासेट> प्रवेश (मूल प्रकार, नहींEDDGridकॉपी) दूरस्थ डेटा स्रोत के लिए। यह सही ढंग से काम कर रहा है, जिसमें सभी वांछित मेटाडाटा शामिल हैं।
  2. यदि यह बहुत धीमा है, तो XML कोड को एक में लपेटने के लिए जोड़ेंEDDGridडेटासेट कॉपी करें।
    • एक अलगdatasetID (शायद बदलकरdatasetIDपुरानेdatasetIDथोड़ा) ।
    • कॉपी करें<सुलभ To><ReloadEveryNMinutes> और<onChange> दूरस्थ सेEDDGridXMLEDDGridप्रतिलिपि XML (उनके मूल्यEDDGridविषय की प्रतिलिपि बनाएँ; आंतरिक डेटासेट के लिए उनका मूल्य अप्रासंगिक हो जाता है।)
  3. ERDDAP™डेटा की एक स्थानीय प्रतिलिपि बनाने और बनाए रखने के लिए।  
  • चेतावनी:EDDGridप्रतिलिपि मानती है कि प्रत्येक भाग के लिए डेटा मान कभी नहीं बदलता है। अगर वे करते हैं, तो आपको मैन्युअल रूप से चंकने वाली फ़ाइलों को हटाने की आवश्यकता है बड़ाParentDirectory साइटमैप datasetID / जो बदल गया है औरझंडाडेटासेट को फिर से लोड किया जाना चाहिए ताकि हटाए गए हिस्से को प्रतिस्थापित किया जा सके। यदि आपके पास डेटासेट के लिए एक ईमेल सदस्यता है, तो आपको दो ईमेल मिलेंगे: एक जब डेटासेट पहली बार फिर से लोड हो जाता है और डेटा कॉपी करना शुरू कर देता है, और दूसरा जब डेटासेट फिर से लोड हो जाता है (स्वचालित रूप से) और नए स्थानीय डेटा फ़ाइलों का पता लगाता है।  
  • सभी अक्ष मान बराबर होना चाहिए। प्रत्येक अक्ष के लिए छोड़कर बाईं ओर (पहला) सभी मूल्यों को सभी बच्चों के लिए बराबर होना चाहिए। परीक्षण की परिशुद्धता द्वारा निर्धारित की जाती हैमैच AxisNDigits।  
  • सेटिंग्स, मेटाडाटा, चर --EDDGridकॉपी संलग्न स्रोत डेटासेट से सेटिंग्स, मेटाडाटा और चर का उपयोग करता है।  
  • मेटाडाटा बदलें -- यदि आपको कोई बदलाव करना हैaddAttributesया स्रोत डेटासेट से जुड़े चर के आदेश को बदलने:
    1. परिवर्तनaddAttributesमें स्रोत डेटासेट के लिएdatasets.xml, आवश्यकतानुसार।
    2. प्रतिलिपिबद्ध फ़ाइलों में से एक को हटा दें।
    3. एक सेटझंडातुरंत डेटासेट को पुनः लोड करने के लिए। यदि आप एक ध्वज का उपयोग करते हैं और आपके पास डेटासेट के लिए एक ईमेल सदस्यता है, तो आपको दो ईमेल मिलेंगे: एक जब डेटासेट पहली बार फिर से लोड हो जाता है और डेटा कॉपी करना शुरू कर देता है, और दूसरा जब डेटासेट फिर से लोड हो जाता है (स्वचालित रूप से) और नए स्थानीय डेटा फ़ाइलों का पता लगाता है।
    4. हटाई गई फ़ाइल को नए मेटाडाटा के साथ फिर से बनाया जाएगा। यदि स्रोत डेटासेट कभी अनुपलब्ध है, तो डेटासेट कभी अनुपलब्ध नहीं है।EDDGridप्रतिलिपि डेटासेट को पुनर्जन्मित फ़ाइल से मेटाडाटा प्राप्त होगा, क्योंकि यह सबसे छोटी फ़ाइल है।

EDDGridकंकाल कॉपी करें एक्सएमएल

  <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>

EDDTableFromCassandra

EDDTableFromCassandra एक से डेटा संभालती हैCassandraतालिका। Cassandra एक NoSQL डेटाबेस है।

  • ERDDAP™Cassandra v2 और v3 के साथ कोई परिवर्तन या सेटअप में अंतर के साथ काम कर सकते हैं। हमने परीक्षण किया हैCassandra v2 और v3 से अपाचे। यह संभावना है किERDDAP™यह भी डेटास्टैक्स से डाउनलोड Cassandra के साथ काम कर सकते हैं।  
  • अगस्त 2019 के लिए - मई 2021, हमें अपनाओपनजड्क के साथ काम करने के लिए Cassandra प्राप्त करने में परेशानी थीJavav8. यह एक परीक्षा \_ACCESS \_VIOLATION threw। लेकिन अब (मई 2021) हम सफलतापूर्वक Cassandra v2.1.22 का उपयोग कर सकते हैं।  

एक टेबल

Cassandra उस तरीके से "joins" का समर्थन नहीं करता है जिस तरह से संबंधिक डेटाबेस करते हैं। एकERDDAP™EDDTableFromCassandra डेटासेट नक्शे एक करने के लिए (शायद एक सबसेट) Cassandra तालिका।

Cassandradatasets.xml

  • ERDDAP™Cassandra साथ आता हैJavaइसलिए आपको इसे अलग से स्थापित करने की आवश्यकता नहीं है।
  • EDDTableFromCassandra के बारे में इस दस्तावेज़ की सभी जानकारी ध्यान से पढ़ें। कुछ विवरण बहुत महत्वपूर्ण हैं।
  • CassandraJavaड्राइवर अपाचे Cassandra के साथ काम करने का इरादा रखता है (1.2+) DataStax Enterprise (3.1+) । यदि आप अपाचे Cassandra 1.2.x का उपयोग कर रहे हैं, तो आपको शुरू करने के लिए प्रत्येक नोड के लिए cassandra.yaml फ़ाइल को संपादित करना होगा।
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। फिर आप इसे ठीक करने के लिए संपादित कर सकते हैं (विशेष रूप से)<विभाजन कीसोर्सेनाम (#partitionkeysourcename) ). आप एक EDDTableFromCassandra Dataset के लिए XML बनाने के लिए आवश्यक अधिकांश जानकारी इकट्ठा कर सकते हैं, जो Cassandra प्रशासक से संपर्क करके और वेब खोज कर सकते हैं।

जनगणना XML EDDTableFromCassandra के लिए दो विशेष विकल्प हैं:

  1. यदि आप "{{{{{}{}}{}{}}{}}}{}}{}}}{}}}{}}{}}{}}{}}{}}{}}{}}}{}}}{}}{}}{}}}}{}}{}}}}{}}}}}}}{}{}}}}{}}}{}}{}{}{}{}{}}{}}}{}{}{}}{}{}}{}{}{}}{}{}}{}}}}}}}}{}}}}}}}}}}}{}{}}}}}}}}}}}}}}{}}}}}}}}}}}}}}}}}}}}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{ (उद्धरण के बिना) कुंजीस्पेस के लिए, कार्यक्रम कुंजीस्पेस की एक सूची प्रदर्शित करेगा
  2. यदि आप एक विशिष्ट कुंजीस्पेस में प्रवेश करते हैं और फिर "!!!List!!!" में प्रवेश करते हैं (उद्धरण के बिना) तालिका नाम के लिए, कार्यक्रम उस keyspace और उनके स्तंभों में तालिकाओं की एक सूची प्रदर्शित करेगा।
केस संवेदनशीलता
  • केस-असंवेदनशील कीस्पेस और टेबल नाम - Cassandra एक मामले के प्रति संवेदनशील तरीके से keyspace और टेबल नामों का इलाज करता है। इस वजह से, आप NEVER एक आरक्षित शब्द का उपयोग करते हैं (लेकिन एक अलग मामले के साथ) एक Cassandra keyspace या टेबल नाम के रूप में।
  • केस-असंवेदनशील कॉलम नाम -- डिफ़ॉल्ट रूप से, Cassandra एक मामले के प्रति संवेदनशील तरीके से स्तंभ नामों का इलाज करता है। यदि आप एक स्तंभ नाम के रूप में Cassandra के आरक्षित शब्दों में से एक का उपयोग करते हैं (कृपया नहीं!) , आप उपयोग करना चाहते हैं
        <columnNameQuotes>"<columnNameQuotes>  

मेंdatasets.xmlइस डेटासेट के लिए ताकि Cassandra औरERDDAP™एक मामले के प्रति संवेदनशील तरीके से स्तंभ नामों का इलाज करेगा। यह संभवतः आपके लिए एक बड़ा सिरदर्द होगा, क्योंकि स्तंभ नामों के मामले-संवेदनशील संस्करणों को निर्धारित करना मुश्किल है - Cassandra लगभग हमेशा कॉलम नामों को सभी निचले-मामले के रूप में प्रदर्शित करता है, भले ही सही मामला हो।

  • Cassandra प्रशासक, जो प्रासंगिक अनुभव हो सकता है के साथ मिलकर काम करते हैं। यदि डेटासेट लोड करने में विफल रहता है, तो पढ़ेंत्रुटि संदेशध्यान से पता लगाने के लिए क्यों।  

Cassandra<कनेक्शन संपत्ति>

Cassandra कनेक्शन गुण है जो में निर्दिष्ट किया जा सकता हैdatasets.xml। इनमें से कई Cassandra के प्रदर्शन को प्रभावित करेंगे-ERDDAP™कनेक्शन। दुर्भाग्य से, Cassandra गुणों को प्रोग्रामेटिक रूप से सेट किया जाना चाहिएJavaइसलिएERDDAP™प्रत्येक संपत्ति के लिए कोड होना चाहिएERDDAP™समर्थन वर्तमान में,ERDDAP™इन गुणों का समर्थन करता है: (दिखाए गए डिफ़ॉल्ट हम क्या देखते हैं। आपका सिस्टम डिफ़ॉल्ट अलग हो सकता है।)

  • सामान्य विकल्प
    <कनेक्शन संपत्ति का नाम संपीड़न >> कोई नहीं|LZ4|स्नैपी </कनेक्शन संपत्ति> (मामले के प्रति संवेदनशील, डिफ़ॉल्ट = none)
    (सामान्य संपीड़न सलाह: अगर Cassandra और के बीच संबंध है तो 'कोई नहीं' का उपयोग करेंERDDAP™स्थानीय / तेज है और यदि कनेक्शन दूरस्थ / धीमी है तो 'LZ4' का उपयोग करता है।)
    <कनेक्शन संपत्ति का नाम credentials >> उपयोगकर्ता नाम / पासवर्ड </कनेक्शन संपत्ति> (यह एक शाब्दिक है'/')
    <कनेक्शन संपत्ति का नाम मीट्रिक >> सच|झूठ </कनेक्शन संपत्ति> (2021-01-25 डिफ़ॉल्ट=true था, अब अनदेखा और हमेशा झूठा)
    <कनेक्शन संपत्ति का नाम बंदरगाह >> an integer </कनेक्शन संपत्ति> (मूल द्विआधारी प्रोटोकॉल = 9042 के लिए डिफ़ॉल्ट)
    <कनेक्शन संपत्ति का नाम एसएसएल >> सच|झूठ </कनेक्शन संपत्ति> (डिफ़ॉल्ट = झूठ)
    (मेरा त्वरित प्रयास असफल रहा। यदि आप सफल हों, तो कृपया मुझे बताएं कि आपने कैसे किया था।)
  • क्वेरी विकल्प
    <कनेक्शन संपत्ति का नाम स्थिरता स्तर >> सब|कोई|प्रत्येक|स्थानीय|स्थानीय|स्थानीय|एक|कोरम|धारावाहिक|तीन|दो </कनेक्शन संपत्ति> (मामले के प्रति संवेदनशील, डिफ़ॉल्ट = एक)
    <कनेक्शन संपत्ति का नाम इकट्ठा करना >> an integer </कनेक्शन संपत्ति> (डिफ़ॉल्ट=5000)
    (एक छोटे से मूल्य के लिए नहीं मिलता।)
    <कनेक्शन संपत्ति का नाम क्रमिक संगतता स्तर >> सब|कोई|प्रत्येक|स्थानीय|स्थानीय|स्थानीय|एक|कोरम|धारावाहिक|तीन|दो </कनेक्शन संपत्ति> (मामले के प्रति संवेदनशील, डिफ़ॉल्ट=SERIAL)
  • सॉकेट विकल्प
    <कनेक्शन संपत्ति का नाम कनेक्टटाइमआउटमिली >> an integer </कनेक्शन संपत्ति> (डिफ़ॉल्ट=5000)
    (कनेक्ट न करें टाइमआउटमिलिस एक छोटे से मूल्य के लिए।)
    <कनेक्शन संपत्ति का नाम जीना >> सच|झूठ </कनेक्शन संपत्ति> <कनेक्शन संपत्ति का नाम readTimeoutMillis >> an integer </कनेक्शन संपत्ति> (Cassandra डिफ़ॉल्ट readTimeoutMillis 12000 है, लेकिनERDDAP™डिफ़ॉल्ट को 120000 में बदल देता है। यदि Cassandra readTimeouts फेंक रहा है, तो यह मदद नहीं कर सकता क्योंकि Cassandra कभी-कभी इस समय से पहले उन्हें फेंकता है। समस्या अधिक संभावना है कि आप प्रति विभाजन बहुत ज्यादा डेटा संग्रहीत कर रहे हैं कुंजी संयोजन।)
    <कनेक्शन संपत्ति का नाम Bufferआकार >> an integer </कनेक्शन संपत्ति> (यह स्पष्ट नहीं है कि क्या डिफ़ॉल्ट प्राप्त होता है BufferSize। इसे एक छोटा सा मूल्य पर सेट न करें।)
    <कनेक्शन संपत्ति का नाम सॉलिंगर >> an integer </कनेक्शन संपत्ति> <कनेक्शन संपत्ति का नाम TcpNoDelay >> सच|झूठ </कनेक्शन संपत्ति> (डिफ़ॉल्ट = शून्य)

यदि आपको अन्य कनेक्शन गुणों को सेट करने में सक्षम होना है, तो हमारे देखेंअतिरिक्त समर्थन प्राप्त करने पर अनुभाग

टॉमकैट के दिए गए स्टार्टअप के लिए, कनेक्शनप्रस्तावों का उपयोग केवल पहली बार किया जाता है जब किसी दिए गए Cassandra URL के लिए डेटासेट बनाया जाता है। उस डेटासेट के सभी रीलोड और उसके बाद के सभी डेटासेट जो उसी URL को साझा करते हैं वे उन मूल कनेक्शनप्रस्तावों का उपयोग करेंगे।

सीक्यूएल

Cassandra Query Language (सीक्यूएल) विशेष रूप से SQL की तरह है, पारंपरिक डेटाबेस द्वारा उपयोग की जाने वाली क्वेरी भाषा। क्योंकिOPeNDAPएसक्यूएल टैबुलर डेटा अनुरोधों को नकल करने के लिए डिज़ाइन किया गया था, यह संभव हैERDDAP™सारणीबद्ध डेटा अनुरोधों को CQL बाउंड/PreparedStatements में परिवर्तित करने के लिए।ERDDAP™में बयान लॉग इनलॉग-इनजैसा पाठ के रूप में बयान: स्टेटमेंट AsText
आपके द्वारा देखे गए बयान का संस्करण बयान का एक पाठ प्रतिनिधित्व होगा और केवल "?" होगा जहां विवादित मूल्यों को रखा जाएगा।  
इतना सरल नहीं -- दुर्भाग्य से, CQL में कई प्रतिबंध हैं, जिस पर स्तंभों को किस प्रकार के बाधाओं के साथ पूछताछ की जा सकती है, उदाहरण के लिए, विभाजन कुंजी स्तंभों को = और IN के साथ विभाजित किया जा सकता है, इसलिएERDDAP™Cassandra के लिए कुछ बाधाएं भेजता है और Cassandra से डेटा प्राप्त होने के बाद सभी बाधाओं को लागू करता है। मददERDDAP™Cassandra के साथ कुशलतापूर्वक सौदा, आपको निर्दिष्ट करने की आवश्यकता है [<विभाजन कीसोर्सेनाम (#partitionkeysourcename) []<क्लस्टर कॉलमसोर्सेनाम (#clustercolumnsourcename) []<अनुक्रमणिका (#Institutecolumnsourcename) मेंdatasets.xmlइस डेटासेट के लिए। ये मदद करने के लिए सबसे महत्वपूर्ण तरीके हैंERDDAP™Cassandra साथ कुशलतापूर्वक काम करते हैं। यदि आप नहीं बोलते हैंERDDAP™यह जानकारी, डेटासेट दर्दनाक रूप से धीमा हो जाएगाERDDAP™और Cassandra संसाधनों के टन का उपयोग करें।  

<विभाजन KeySourceNames>

क्योंकि विभाजन कुंजी Cassandra टेबल में एक केंद्रीय भूमिका निभाते हैं,ERDDAP™उनके बारे में जानने की जरूरतsourceNameयदि प्रासंगिक हो, तो उनके साथ काम करने के बारे में अन्य जानकारी।

  • आप MUST में विभाजन कुंजी स्रोत स्तंभ नामों की एक comma-separated सूची निर्दिष्टdatasets.xmlमाध्यम<विभाजन KeySourceNames उदाहरण
        <partitionKeySourceNames>station, deviceid<partitionKeySourceNames>  

अधिक जटिल उदाहरण

        <partitionKeySourceNames>deviceid=1007, date/sampletime/1970-01-01<partitionKeySourceNames>
  • टाइमस्टैम्प विभाजन कुंजी -- यदि विभाजन कुंजी कॉलम में से एक एक टाइमस्टैम्प कॉलम है जिसमें किसी अन्य टाइमस्टैम्प कॉलम का मोटे संस्करण है, तो इसे इसके माध्यम से निर्दिष्ट करें विभाजन कुंजीSourcName/otherColumnSourceName/time\_precision
    कहाँtime\_precisionएक हैtime\_precisionकहीं और इस्तेमाल किया तारERDDAP। Z in the trailingtime\_precisionस्ट्रिंग डिफ़ॉल्ट है, इसलिए यह कोई फर्क नहीं पड़ता कि क्या हैtime\_precisionस्ट्रिंग Z में समाप्त होती है या नहीं। उदाहरण के लिए,ERDDAP™दिनांक / नमूना / 1970-01-01 की व्याख्या करेगा "इसका उपयोग करके नमूना समय पर बाधाओं से तारीख के लिए संयम का निर्माण किया जा सकता हैtime\_precision" बाधाओं का वास्तविक रूपांतरण अधिक जटिल है, लेकिन यह अवलोकन है। जब भी यह प्रासंगिक हो इसका प्रयोग करें। यह सक्षम बनाता हैERDDAP™Cassandra के साथ कुशलतापूर्वक काम करने के लिए। यदि स्तंभों के बीच यह संबंध एक Cassandra तालिका में मौजूद है और आप नहीं बतातेERDDAP™डेटासेट दर्दनाक रूप से धीमा हो जाएगाERDDAP™और Cassandra संसाधनों के टन का उपयोग करें।
  • एकल मूल्य विभाजन कुंजी यदि आप चाहते हैंERDDAP™एक विभाजन कुंजी के केवल एक मान के साथ काम करने के लिए डेटासेट, निर्दिष्ट करें विभाजनKeySourceName=value । एक संख्यात्मक स्तंभ के लिए उद्धरण का उपयोग न करें, उदाहरण के लिए, deviceid=1007 उदाहरण के लिए, स्ट्रिंग कॉलम के लिए उद्धरण का उपयोग करें, स्थिर = "पॉइंट पिनोस"
  • डेटासेट डिफ़ॉल्ट क्रम -- विभाजन कुंजी का आदेश<dataVariable>datasets.xmlCassandra से परिणामों के डिफ़ॉल्ट प्रकार के आदेश को निर्धारित करता है। बेशक, उपयोगकर्ता अपील करके परिणामों के दिए गए सेट के लिए अलग-अलग ऑर्डर का अनुरोध कर सकते हैं औरorderBy (" चरों की अल्पसंख्यक सूची ") उनके प्रश्नों के अंत तक।
  • डिफ़ॉल्ट रूप से, Cassandra औरERDDAP™एक मामले के प्रति संवेदनशील तरीके से स्तंभ नामों का इलाज करें। लेकिन अगर आप सेट करते हैंस्तंभनाम Quotesto "ERDDAP™Cassandra स्तंभ नामों को मामले के प्रति संवेदनशील तरीके से व्यवहार करेगा।  

<विभाजन KeyCSV>

यदि यह निर्दिष्ट है,ERDDAP™विभाजन के लिए Cassandra पूछने के बजाय इसका उपयोग करेगा प्रत्येक बार डेटासेट को पुनः लोड किया जाता है। यह अलग विभाजन कुंजी मूल्यों की सूची प्रदान करता है, आदेश में वे इस्तेमाल किया जाएगा। एक बार 1970-01-01T00:00:00Z के बाद से सेकंड के रूप में निर्दिष्ट किया जाना चाहिए। लेकिन समय निर्दिष्ट करने के लिए दो विशेष वैकल्पिक तरीके भी हैं (प्रत्येक स्ट्रिंग के रूप में एन्कोड किया गया) :

  1. समय (AISO8601 समय) (MAY को स्ट्रिंग के रूप में एन्कोड किया जा सकता है)
  2. "समय (anISO8601StartTime, strideSeconds, स्टॉपटाइम) " (MUST को स्ट्रिंग के रूप में कोडित किया जाना चाहिए)
    रुकना समय ISO8601 हो सकता है समयnow-nUnits" समय (उदाहरण के लिए, "now-3 मिनट) । रुकना समय शुरू करने का एक सटीक मैच नहीं होना चाहिए समय + x strideSeconds। एक बार के साथ एक पंक्ति () मूल्य हर क्वेरी से पहले कई पंक्तियों में विस्तारित हो जाता है, इसलिए विभाजन की सूची कुंजी हमेशा पूरी तरह से अद्यतन हो सकती है। उदाहरण के लिए,
    <partitionKeyCSV>
deviceid,date
1001,"times(2014-11-01T00:00:00Z, 86400, 2014-11-02T00:00:00Z)"
1007,"time(2014-11-07T00:00:00Z)"
1008,time(2014-11-08T00:00:00Z)
1009,1.4154912E9
</partitionKeyCSV>

विभाजन कुंजी संयोजन की इस तालिका में विस्तार:

    deviceid,date
1001,1.4148E9
1001,1.4148864E9
1007,1.4153184E9
1008,1.4154048E9
1009,1.4154912E9

<क्लस्टरColumnSourceNames>

Cassandra क्लस्टर कॉलम पर SQL-like बाधाओं को स्वीकार करता है, जो स्तंभ हैं जो प्राथमिक कुंजी का दूसरा हिस्सा बनाते हैं (विभाजन कुंजी के बाद (s) ) । इसलिए, यह आवश्यक है कि आप इन स्तंभों को माध्यम से पहचानें<क्लस्टर कॉलमसोर्सेनाम यह सक्षमERDDAP™Cassandra के साथ कुशलतापूर्वक काम करने के लिए। यदि वहाँ क्लस्टर कॉलम हैं और आप नहीं बताते हैंERDDAPडेटासेट दर्दनाक रूप से धीमा हो जाएगाERDDAP™और Cassandra संसाधनों के टन का उपयोग करें।

  • उदाहरण के लिए,<क्लस्टर कॉलमसोर्सेनाम MyClusterColumn1, myClusterColumn2 </clusterColumnSourceNames>
  • यदि एक Cassandra तालिका में कोई क्लस्टर कॉलम नहीं है, तो या तो निर्दिष्ट नहीं है<क्लस्टरColumnSourceNames
  • डिफ़ॉल्ट रूप से, Cassandra औरERDDAP™एक मामले के प्रति संवेदनशील तरीके से स्तंभ नामों का इलाज करें। लेकिन अगर आप सेट करते हैंस्तंभनाम Quotesto "ERDDAP™एक मामले के प्रति संवेदनशील तरीके से Cassandra स्तंभ नामों का इलाज करेगा।  

<अनुक्रमणिका

Cassandra स्वीकार करता है'='माध्यमिक सूचकांक स्तंभों पर बाधाएं, जो स्तंभ हैं जिन्हें आपने स्पष्ट रूप से अनुक्रमित किया है

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

(हाँ, माता-पिता की आवश्यकता होती है।)
तो, यह बहुत उपयोगी है अगर आप इन स्तंभों के माध्यम से पहचानते हैं<अनुक्रमणिका यह सक्षमERDDAP™Cassandra के साथ कुशलतापूर्वक काम करने के लिए। यदि अनुक्रमणिका हैं और आप नहीं बताते हैंERDDAP, कुछ प्रश्नों की आवश्यकता होती है, दर्दनाक रूप से धीमी गति सेERDDAP™और Cassandra संसाधनों के टन का उपयोग करें।

  • उदाहरण के लिए,<अनुक्रमणिका myIndexColumn1, myIndexColumn2 </ indexColumnSourceNames>
  • यदि एक Cassandra तालिका में कोई इंडेक्स कॉलम नहीं है, तो या तो निर्दिष्ट नहीं है<indexColumnSourceNames>, या इसे बिना किसी मूल्य के निर्दिष्ट करें।
  • WARNING: Cassandra इंडेक्स डेटाबेस इंडेक्स की तरह नहीं हैं। Cassandra इंडेक्स केवल मदद के साथ'='बाधाएं वे केवल हैंअनुशंसितउन स्तंभों के लिए जो कुल मानों की तुलना में बहुत कम विशिष्ट मान हैं।
  • डिफ़ॉल्ट रूप से, Cassandra औरERDDAP™एक मामले के प्रति संवेदनशील तरीके से स्तंभ नामों का इलाज करें। लेकिन अगर आप सेट करते हैंस्तंभनाम Quotesto "ERDDAP™एक मामले के प्रति संवेदनशील तरीके से Cassandra स्तंभ नामों का इलाज करेगा।  

<MaxRequestFraction>

कबERDDAP™ (फिर) डेटासेट लोड करता है,ERDDAP™Cassandra से विभाजन कुंजी के विभिन्न संयोजनों की सूची मिलती है। एक विशाल डेटासेट के लिए, संयोजन की संख्या बहुत बड़ी होगी। यदि आप उपयोगकर्ताओं को अधिकांश या सभी डेटासेट का अनुरोध करने से रोकना चाहते हैं (या यहां तक कि एक अनुरोध जो पूछता हैERDDAP™इसे आगे बढ़ाने के लिए अधिकांश या सभी डेटा डाउनलोड करने के लिए) , आप कह सकते हैंERDDAP™केवल उन अनुरोधों को अनुमति देने के लिए जो कुछ राशियों द्वारा संयोजनों की संख्या को कम करते हैं<MaxRequestFraction>, जो 1e-10 के बीच एक फ्लोटिंग पॉइंट नंबर है (जिसका मतलब है कि अनुरोध को अरबों में 1 से अधिक संयोजन की आवश्यकता नहीं है) और 1 (डिफ़ॉल्ट, जिसका मतलब है कि अनुरोध पूरे डेटासेट के लिए हो सकता है) । उदाहरण के लिए, यदि किसी डेटासेट में विभाजन कुंजी के 10000 अलग-अलग संयोजन हैं और मैक्सRequestFraction को 0.1 पर सेट किया गया है। इसके बाद 1001 या उससे अधिक संयोजनों से डेटा की आवश्यकता वाले अनुरोध त्रुटि संदेश उत्पन्न करेंगे, लेकिन 1000 या उससे कम संयोजनों से डेटा की आवश्यकता वाले अनुरोधों को अनुमति दी जाएगी।

आम तौर पर, डेटासेट जितना बड़ा होता है, उतना कम आपको सेट करना चाहिए<MaxRequestFraction> इसलिए आप इसे एक छोटे से डेटासेट के लिए सेट कर सकते हैं, एक मध्यम आकार के डेटासेट के लिए 0.1, एक बड़े डेटासेट के लिए 0.01 और एक विशाल डेटासेट के लिए 0.0001।

यह दृष्टिकोण सही से दूर है। यह कुछ उचित अनुरोधों को अस्वीकार कर दिया जाएगा और कुछ बहुत बड़े अनुरोधों की अनुमति दी जा रही है। लेकिन यह एक मुश्किल समस्या है और यह समाधान कुछ भी नहीं से बेहतर है।

CassandrasubsetVariables

अन्य EDDTable डेटासेट के साथ, आप एक अल्पायोजित सूची को निर्दिष्ट कर सकते हैं<dataVariable>destinationName" नामक वैश्विक विशेषता में एसsubsetVariables" वेरिएबल्स की पहचान करने के लिए जिनका मूल्य सीमित है। इसके बाद डेटासेट में एक .subset वेब पेज होगा और कई वेब पृष्ठों पर ड्रॉप-डाउन सूचियों में उन चरों के लिए अलग-अलग मूल्यों की सूची दिखाएंगी।

सूची में सिर्फ विभाजन कुंजी चर और स्थैतिक स्तंभों को शामिल करना STRONGLY E हैNCOURAGED. Cassandra विशिष्ट संयोजनों की सूची को बहुत जल्दी और आसानी से हर बार डेटासेट को पुनः लोड किया जाता है। एक अपवाद टाइमस्टैम्प विभाजन कुंजी है जो कुछ अन्य टाइमस्टैम्प कॉलम के मोटे संस्करण हैं - शायद इन की सूची से बाहर निकलना सबसे अच्छा हैsubsetVariablesचूंकि बड़ी संख्या में मूल्य हैं और वे उपयोगकर्ताओं के लिए बहुत उपयोगी नहीं हैं।

यदि आप सूची में गैर-विभाग कुंजी, गैर-स्थिर चर शामिल हैं, तो शायद यह होगा बहुत प्रत्येक बार Cassandra के लिए कम्प्यूटेशनल रूप से महंगा डेटासेट को फिर से लोड किया जाता है, क्योंकिERDDAP™सूचना उत्पन्न करने के लिए डेटासेट की हर पंक्ति को देखना है। वास्तव में, क्वेरी विफल होने की संभावना है। इसलिए, बहुत छोटे डेटासेट के अलावा, यह STRONGLY DISCOURAGED है।

Cassandra Datatypes

क्योंकि कुछ अस्पष्टता है जिसके बारे मेंCassandra डेटा प्रकारजिसके लिए नक्शाERDDAP™डेटा प्रकार, आपको निर्दिष्ट करने की आवश्यकता है [<Datatype> (#datatype) प्रत्येक के लिए टैग<dataVariable> (#datavariable) बताने के लिएERDDAP™कौन सा डेटाटाइप उपयोग करने के लिए। मानकERDDAP™डेटा प्रकार (और सबसे आम संगत Cassandra डेटा प्रकार) हैं:

  • बोरान (बोरान) जोERDDAP™तो स्टोर बाइट के रूप में
  • बाइट (Int, यदि रेंज -128 से 127 है)
  • छोटा (Int, यदि सीमा -32768 से 32767 है)
  • int (Int, counter?, varint?, यदि रेंज -2147483648 से 2147483647 है)
  • लंबा (Bigint, counter?, varint?, यदि सीमा है -9223372036854775808 to 9223372036854775807)
  • फ्लोट (फ्लोट)
  • डबल (डबल, दशमलव (परिशुद्धता के संभावित नुकसान के साथ) टाइमस्टैम्प)
  • char (अगर उनके पास 1 से अधिक चरित्र नहीं है, तो Ascii या पाठ)
  • स्ट्रिंग (Ascii, पाठ, varchar, inet, uuid, timeuid, blob, नक्शा, सेट, सूची?)

Cassandraटाइमस्टैम्पएक विशेष मामला है: उपयोगERDDAPदोहरे डेटा प्रकार

यदि आप स्ट्रिंग डेटाटाइप को निर्दिष्ट करते हैंERDDAP™एक Cassandra नक्शा, सेट या सूची के लिए, प्रत्येक Cassandra पंक्ति पर मानचित्र, सेट या सूची को एकल पंक्ति में परिवर्तित किया जाएगा।ERDDAP™तालिका।ERDDAP™सूची के लिए एक वैकल्पिक प्रणाली है; नीचे देखें।

प्रकार सूची -ERDDAP[e]<Datatype> (#datatype) Cassandra के लिए टैगdataVariableनियमित रूप से शामिल कर सकते हैंERDDAP™डेटा प्रकार (ऊपर देखें) साथ ही कई विशेष डेटाप्रकार जिन्हें Cassandra सूची कॉलम के लिए इस्तेमाल किया जा सकता है: booleanList, बाइटलिस्ट, ubyteList, shortList, ushortList, intList, uintList, LongList, ulongList, फ्लोटलिस्ट, डबललिस्ट, चारलिस्ट, स्ट्रिंगलिस्ट। जब इन सूची कॉलम में से एक को पारित होने के परिणामों में होता हैERDDAP™, स्रोत डेटा की प्रत्येक पंक्ति सूची में विस्तार किया जाएगा। आकार () डेटा की पंक्तियों मेंERDDAPसरल; डेटा प्रकार (उदाहरण के लिए, int) उस स्रोत डेटा पंक्ति में डुप्लिकेट सूची होगी। आकार () समय। यदि परिणामों में एक से अधिक सूची चर होते हैं, तो सभी डेटा की एक निर्धारित पंक्ति पर सूचीबद्ध होते हैं MUST में समान आकार होता है और MUST को "parallel" सूची, या होना चाहिए।ERDDAP™त्रुटि संदेश उत्पन्न करेगा। उदाहरण के लिए, एक ADCP से वर्तमान माप के लिए, गहराई\[0\], uCurrent\[0\], vCurrent\[0\], और zCurrent\[0\]सभी संबंधित हैं, और गहराई\[1\], uCurrent\[1\], vCurrent\[1\], और zCurrent\[1\]सभी संबंधित हैं, ... वैकल्पिक रूप से, यदि आप नहीं चाहते हैंERDDAP™एकाधिक पंक्तियों में एक सूची का विस्तार करने के लिएERDDAP™तालिका, स्ट्रिंग को निर्दिष्ट करेंdataVariableडेटा इसलिए पूरी सूची को एक पंक्ति में एक स्ट्रिंग के रूप में दर्शाया जाएगाERDDAP।

Cassandra TimeStamp डेटा

Cassandra का टाइमस्टैम्प डेटा हमेशा समय क्षेत्र के बारे में जागरूक है। यदि आप टाइमज़ोन को निर्दिष्ट किए बिना टाइमस्टैम्प डेटा में प्रवेश करते हैं, तो Cassandra टाइमस्टैम्प स्थानीय समय क्षेत्र का उपयोग करता है।

ERDDAP™टाइमस्टैम्प डेटा का समर्थन करता है और हमेशा डेटा प्रस्तुत करता हैZulu/GMT समय क्षेत्र। यदि आप Cassandra में टाइमस्टैम्प डेटा में प्रवेश करते हैं तो इसके अलावा एक समय क्षेत्र का उपयोग करकेZulu/GMT, याद रखें कि आपको टाइमस्टैम्प डेटा के लिए सभी क्वेरी करने की आवश्यकता हैERDDAP™उपयोग करनाZulu/GMT समय क्षेत्र। इसलिए आश्चर्य नहीं है कि जब टाइमस्टैम्प मान निकलते हैंERDDAPस्थानीय से स्थानीय समय क्षेत्र स्विच के कारण कई घंटों तक स्थानांतरित हो जाते हैंZulu/GMT समय।

  • मेंERDDAP'datasets.xml, में<dataVariable> एक टाइमस्टैम्प चर के लिए टैग, सेट
          <dataType>double</dataType>  

और<addAttributes> सेट

          <att name="units">seconds since 1970-01-01T00:00:00Z</att>
  • सुझाव: यदि डेटा एक समय सीमा है, तो टाइमस्टैम्प मानों को निहित समय सीमा के केंद्र को संदर्भित करने के लिए उपयोगी है। (उदाहरण के लिए, दोपहर) । उदाहरण के लिए, यदि किसी उपयोगकर्ता के पास किसी अन्य डेटासेट से 2010-03-26T13:00Z के लिए डेटा है और वे इस Cassandra डेटासेट से निकटतम डेटा चाहते हैं जिसमें प्रत्येक दिन के लिए डेटा है, तो 2010-03-26T12:00Z के लिए डेटा (उस तारीख के लिए Cassandra डेटा का प्रतिनिधित्व करना) जाहिर है सबसे अच्छा (पहले या बाद में मध्य रात के विपरीत, जहां यह कम स्पष्ट है जो सबसे अच्छा है) ।
  • ERDDAP™इसमें उपयोगिता हैएक न्यूमेरिक कनवर्ट करें समय-समय पर स्ट्रिंग टाइम से
  • देखेंकैसेERDDAP™समय के साथ सौदे।  

पूर्णांक

Cassandra in Cassandra int (ERDDAP™int) और bigint (ERDDAP™लंबा) स्तंभ, लेकिनERDDAP™किसी भी पूर्ण डेटा प्रकार के लिए वास्तविक nulls का समर्थन नहीं करता है। डिफ़ॉल्ट रूप से, Cassandra पूर्णांक नल में परिवर्तित किया जाएगाERDDAP™2147483647 लंबे स्तंभों के लिए int कॉलम, या 9223372036854775807 के लिए। ये कुछ प्रकार के टेक्स्ट आउटपुट फ़ाइलों में "NaN" के रूप में दिखाई देंगे (उदाहरण के लिए, csv) पाठ आउटपुट फ़ाइलों के अन्य प्रकारों में "" (उदाहरण के लिए,.htmlTable) , और विशिष्ट संख्या (2147483647 लापता मूल्यों के लिए) अन्य प्रकार की फाइलों में (उदाहरण के लिए, बाइनरी फाइल जैसे.ncचटाई) । उपयोगकर्ता इस प्रकार के लापता मान के साथ डेटा की पंक्तियों की खोज "NaN", जैसे "&windSpeed=NaN" का जिक्र करके कर सकते हैं।

यदि आप अपने Cassandra तालिका में लापता मानों को इंगित करने के लिए कुछ अन्य पूर्णांक मान का उपयोग करते हैं, तो कृपया उस मान की पहचान करेंdatasets.xml:

<att name="missing\_value" type="int"\>-999</att>

Cassandra फ्लोटिंग पॉइंट कॉलम के लिए, nulls को NaNs में बदल दिया जाता हैERDDAP। Cassandra डेटा प्रकारों के लिए जो स्ट्रिंग्स में परिवर्तित होते हैंERDDAP™, nulls खाली स्ट्रिंग में परिवर्तित हो जाते हैं। यह समस्या नहीं होनी चाहिए।

"WARNING: पहले से तैयार क्वेरी को फिर से तैयार करना"

  • "WARNING: पहले से ही तैयार क्वेरी की मरम्मत" में tomcat /logs/catalina.out (या कुछ अन्य टॉमकैट लॉग फाइल)
    Cassandra प्रलेखन का कहना है कि अगर एक ही क्वेरी को दो बार तैयार स्टेटमेंट में बनाया जाता है तो परेशानी होती है। (या अधिक) । (इसे देखेंबग रिपोर्ट।) Cassandra Mad बनाने से बचने के लिए,ERDDAP™सभी तैयारराज्यों को कैश करें ताकि यह उन्हें फिर से इस्तेमाल कर सके। अगर / जब टॉमकैट /ERDDAP™फिर से शुरू किया गया है, लेकिन मुझे लगता है कि ठीक है क्योंकि तैयार किए गए बयान दिए गए सत्र के साथ जुड़े हुए हैं (बीचJavaCassandra) , जो भी खो गया है। इसलिए, आप इन संदेशों को देख सकते हैं। मुझे कोई अन्य समाधान नहीं मिला। दुर्भाग्यवश, यह एक चेतावनी है, कोई त्रुटि नहीं है (हालांकि Cassandra ने यह धमकी दी कि यह प्रदर्शन समस्याओं का कारण बन सकता है) ।

Cassandra का दावा है कि तैयारी स्टेटमेंट हमेशा के लिए अच्छे हैं, इसलिएERDDAP' कैश्ड तैयारी स्टेटमेंट कभी भी आउट-ऑफ-डेट / अवैध नहीं होना चाहिए। यदि यह सच नहीं है, और आपको कुछ निश्चित तैयारी के बारे में त्रुटियां प्राप्त होती हैं, तो आपको फिर से शुरू करने की आवश्यकता होती है।ERDDAP™स्पष्ट करनाERDDAPतैयारी स्टेटमेंट्स का कैश।

Cassandra सुरक्षा

देखेंCassandra सुरक्षित

जब Cassandra के साथ काम करते हैं, तो आपको अपने Cassandra को नुकसान पहुंचाने या डेटा तक पहुंच प्राप्त करने की अनुमति देने से बचने के लिए सुरक्षित रूप से और सुरक्षित रूप से चीजों को करने की आवश्यकता है।ERDDAP™यह भी सुरक्षित तरीके से काम करने की कोशिश करता है।

  • हम आपको स्थापित करने के लिए प्रोत्साहित करते हैंERDDAP™एक Cassandra उपयोगकर्ता के रूप में Cassandra से कनेक्ट करने के लिए, जिसमें केवल एक ही उपयोगकर्ता तक पहुंच है। प्रासंगिक टेबल (s) और केवल READ विशेषाधिकार है।
  • हम आपको कनेक्शन सेट करने के लिए प्रोत्साहित करते हैंERDDAP™इतना है कि यह
    • हमेशा एसएसएल का उपयोग करते हैं,
    • केवल एक आईपी पते से कनेक्शन की अनुमति देता है (या पते का एक ब्लॉक) और एक सेERDDAP™उपयोगकर्ता, और
    • केवल अपने MD5 हैश्ड फॉर्म में पासवर्ड ट्रांसफर करता है।
  • \[ज्ञानकोश\]कनेक्शनप्रस्ताव (पासवर्ड सहित!) में सादे पाठ के रूप में संग्रहीत किया जाता हैdatasets.xml। हमें प्रशासक को Cassandra पासवर्ड में प्रवेश करने की अनुमति देने का कोई तरीका नहीं मिला हैERDDAPटॉमकैट में स्टार्टअप (जो उपयोगकर्ता इनपुट के बिना होता है) इसलिए पासवर्ड एक फ़ाइल में सुलभ होना चाहिए। इसे सुरक्षित बनाने के लिए:
    • आप (The number of theERDDAP™व्यवस्थापक) का मालिक होना चाहिएdatasets.xmlऔर READ और WRITE पहुँच है।
    • एक समूह बनाएं जिसमें केवल उपयोगकर्ता = परमाणु शामिल है। बनाने के लिए chgrp का उपयोग करें कि समूह के लिएdatasets.xml, सिर्फ READ विशेषाधिकार के साथ।
    • o-rwx विशेषाधिकार निर्दिष्ट करने के लिए chmod का उपयोग करें ("अन्य" उपयोगकर्ताओं के लिए कोई READ या WRITE एक्सेस नहीं) के लिएdatasets.xml।
  • कबERDDAP™पासवर्ड और अन्य कनेक्शन गुण "निजी" में संग्रहीत होते हैंJavaचर।
  • ग्राहकों से अनुरोधों को Cassandra के लिए CQL अनुरोध उत्पन्न करने से पहले वैधता के लिए parsed और जाँच की जाती है।
  • CQL इंजेक्शन को रोकने के लिए Cassandra को CQL बाउंड / PreparedStatements के साथ अनुरोध किया गया है। किसी भी मामले में, Cassandra स्वाभाविक रूप से पारंपरिक डेटाबेस की तुलना में CQL इंजेक्शन के लिए कम संवेदनशील है।SQL इंजेक्शन।  

Cassandra स्पीड

Cassandra तेजी से या धीमा हो सकता है। कुछ चीजें आप इसे तेजी से बनाने के लिए कर सकते हैं:

  • सामान्य में - CQL की प्रकृति यह है कि प्रश्न हैंघोषणा। वे सिर्फ निर्दिष्ट करते हैं कि उपयोगकर्ता क्या चाहता है। उनमें एक विनिर्देश या संकेत शामिल नहीं हैं कि कैसे क्वेरी को संभालने या अनुकूलित करने के लिए है। इसलिए कोई रास्ता नहीं हैERDDAP™इस तरह से क्वेरी उत्पन्न करने के लिए कि यह Cassandra क्वेरी को अनुकूलित करने में मदद करता है (या किसी भी तरह से निर्दिष्ट करता है कि कैसे क्वेरी को संभालना है) । सामान्य तौर पर, यह Cassandra प्रशासक तक है जो चीजों को सेट करने के लिए है (उदाहरण के लिए, सूचकांक) कुछ प्रकार के प्रश्नों का अनुकूलन करना।  
  • उन टाइमस्टैम्प कॉलम को निर्दिष्ट करना जो मोटे-सटीक टाइमस्टैम्प विभाजन कुंजी से संबंधित हैं।<विभाजन कीसोर्सेनाम (#partitionkeysourcename) मदद करने का सबसे महत्वपूर्ण तरीका हैERDDAP™Cassandra साथ कुशलतापूर्वक काम करते हैं। यदि यह संबंध एक Cassandra तालिका में मौजूद है और आप नहीं बतातेERDDAP™डेटासेट दर्दनाक रूप से धीमा हो जाएगाERDDAP™और Cassandra संसाधनों के टन का उपयोग करें।  
  • के माध्यम से क्लस्टर स्तंभों को निर्दिष्ट करना<क्लस्टर कॉलमसोर्सेनाम (#clustercolumnsourcename) मदद करने का दूसरा सबसे महत्वपूर्ण तरीका हैERDDAP™Cassandra साथ कुशलतापूर्वक काम करते हैं। यदि वहाँ क्लस्टर कॉलम हैं और आप नहीं बताते हैंERDDAPडेटा के लिए संभावित प्रश्नों का एक बड़ा सेट अनावश्यक रूप से, दर्दनाक रूप से धीमा हो जाएगाERDDAP™और Cassandra संसाधनों के टन का उपयोग करें।  
  • बनानासूचकांकआम तौर पर प्रतिबंधित चर के लिए -- आप Cassandra स्तंभों के लिए अनुक्रमणिका बनाकर कुछ प्रश्नों को गति दे सकते हैं जो अक्सर "=" बाधाओं के साथ बाधित होते हैं।

Cassandra सूची, सेट, या मानचित्र स्तंभों के लिए अनुक्रमित नहीं कर सकते हैं।

  • के माध्यम से सूचकांक स्तंभों को निर्दिष्ट करना<अनुक्रमणिका (#Institutecolumnsourcename) मदद करने का एक महत्वपूर्ण तरीका हैERDDAP™Cassandra साथ कुशलतापूर्वक काम करते हैं। यदि अनुक्रमणिका हैं और आप नहीं बताते हैंERDDAPडेटा के लिए कुछ प्रश्नों की आवश्यकता नहीं होगी, दर्दनाक रूप से धीमी गति सेERDDAP™और Cassandra संसाधनों के टन का उपयोग करें।  

Cassandra Stats

  • "Cassandra stats" नैदानिक संदेश-- प्रत्येक के लिएERDDAP™एक Cassandra dataset के लिए उपयोगकर्ता क्वेरी,ERDDAP™लॉग फ़ाइल में एक लाइन प्रिंट करेगा, बड़ाParentDirectory /logs/log.txt, क्वेरी से संबंधित कुछ आंकड़ों के साथ, उदाहरण के लिए,
        \\* Cassandra stats: partitionKeyTable: 2/10000=2e-4 < 0.1 nCassRows=1200 nErddapRows=12000 nRowsToUser=7405  

उपरोक्त उदाहरण में संख्याओं का उपयोग करना, इसका मतलब है:

  • कबERDDAP™अंतिम (फिर) इस डेटासेट को लोड किया गया, Cassandra ने कहाERDDAP™कि विभाजन कुंजी के 10000 अलग संयोजन थे।ERDDAP™एक फ़ाइल में सभी अलग संयोजनों को कैश किया।
  • उपयोगकर्ता की बाधाओं के कारण,ERDDAP™पहचाने गए 2 संयोजन 10000 में से जो वांछित डेटा हो सकता है। तो,ERDDAP™कैसांड्रा को 2 कॉल करेगा, जो विभाजन कुंजी के प्रत्येक संयोजन के लिए एक है। (यही कारण है कि Cassandra की आवश्यकता क्या है।) स्पष्ट रूप से, यह समस्याग्रस्त है अगर एक बड़े डेटासेट में विभाजन कुंजी के संयोजन की एक बड़ी संख्या है और एक दिए गए अनुरोध में काफी हद तक इसे कम नहीं किया गया है। आपको आवश्यकता हो सकती है कि प्रत्येक अनुरोध सेटिंग द्वारा कुंजी स्थान को कम कर देता है [<MaxRequestFraction> (#maxrequest) । यहां, 2/10000=2e-4, जो अधिकतम RequestFraction से कम है (0.1) इसलिए अनुरोध की अनुमति दी गई थी।
  • विभाजन कुंजी पर बाधाओं को लागू करने के बाद,क्लस्टर कॉलम, औरसूचकांक स्तंभजिसके द्वारा भेजा गया थाERDDAP™, Cassandra ने डेटा की 1200 पंक्तियों को वापस कर दियाERDDAP™परिणाम सेट में।
  • परिणाम होना चाहिएडेटा टाइप कुछ प्रकार सूचीस्तंभ (प्रति सूची 10 आइटम का औसत) क्योंकिERDDAP™Cassandra से 1200 पंक्तियों का विस्तार 12000 पंक्तियों मेंERDDAP।
  • ERDDAP™हमेशा Cassandra से डेटा के लिए उपयोगकर्ता की सभी बाधाओं को लागू करता है। इस मामले में, जो बाधाएं कैसंड्रा ने संभाली नहीं थी, ने पंक्तियों की संख्या को 7405 कर दिया था। यह उपयोगकर्ता को भेजे गए पंक्तियों की संख्या है।

इन नैदानिक संदेशों का सबसे महत्वपूर्ण उपयोग यह सुनिश्चित करना है किERDDAP™क्या आप सोचते हैं कि यह क्या कर रहा है? अगर यह नहीं है (उदाहरण के लिए, क्या यह उम्मीद के अनुसार अलग-अलग संयोजनों की संख्या को कम नहीं करता है?) , फिर आप गलत होने के बारे में जानने की कोशिश करने के लिए जानकारी का उपयोग कर सकते हैं।  

  • अनुसंधान और प्रयोग बेहतर खोजने के लिए<कनेक्शनProperty> (#cassandra-connectionproperty) '  
  • Cassandra के बीच नेटवर्क कनेक्शन की गति की जांच करें औरERDDAP। यदि कनेक्शन धीमी है, तो देखें कि क्या आप इसे सुधार सकते हैं। जब सबसे अच्छी स्थिति होती हैERDDAP™उसी से जुड़े सर्वर पर चल रहा है (तेज) सर्वर के रूप में स्विच करें Cassandra नोड को चलाने के लिए जिसे आप कनेक्ट कर रहे हैं।  
  • कृपया रोगी बनें। यहाँ और Cassandra प्रलेखन में ध्यान से जानकारी पढ़ें। प्रयोग। अपना काम चेक करें। अगर CassandraERDDAP™कनेक्शन अभी भी आप उम्मीद की तुलना में धीमी है, कृपया अपने Cassandra तालिका की स्कीमा और अपने शामिल हैंERDDAP™का हिस्साdatasets.xmlऔर देखेंअतिरिक्त समर्थन प्राप्त करने पर अनुभाग।  
  • यदि सब कुछ विफल रहता है, डेटा को संग्रह में संग्रहीत करने पर विचार करेंNetCDFv3.ncफ़ाइलें (विशेष रूप से.ncफ़ाइलें जो उपयोग करती हैंCF Discrete Sampling Geometries (DSG) Contiguous Ragged Array डेटा संरचनाओं और इतने के साथ संभाला जा सकता हैERDDAP'EDDTableFromNcCFFiles) । यदि वे तार्किक रूप से व्यवस्थित हैं (प्रत्येक अंतरिक्ष और समय के एक हिस्से के लिए डेटा के साथ) ,ERDDAP™उनमें से बहुत जल्दी डेटा निकाल सकते हैं।  

EDDTableFromCassandra कंकाल 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>

EDDTableFromDapSequence

EDDTableFromDapSequence 1- और 2-स्तर अनुक्रमों के भीतर चर संभालती हैDAPजैसे सर्वरDAPप्रति व्यक्ति (पर था https://www.pmel.noaa.gov/epic/software/dapper/ अब बंद) ।

  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं। आप अपने ब्राउज़र में स्रोत डेटासेट के डीडीएस और डीएएस फ़ाइलों को देखकर आवश्यक जानकारी एकत्र कर सकते हैं (dads और .dds को जोड़कर)sourceUrl(a उदाहरण) https://dapper.pmel.noaa.gov/dapper/epic/tao\\_time\\_series.cdp.dds ).

  • एक चर में हैDAPयदि .dds प्रतिक्रिया इंगित करती है कि चर धारण करने वाली डेटा संरचना एक "अनुक्रम" है। (असंवेदनशील) ।

  • कुछ मामलों में, आप एक अनुक्रम के भीतर एक अनुक्रम देखेंगे, एक 2-स्तरीय अनुक्रम - EDDTableFromDapSequence इन को भी संभालती है।

EDDTableFromDapSequence कंकाल एक्सएमएल

  <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>

EDDTableFromDatabase

EDDTableFromDatabase डेटा को एक रिलेशनल डेटाबेस टेबल से संभालता है यादृष्टिकोण.

एक तालिका या देखें

यदि आप जिस डेटा को सेवा करना चाहते हैं वह दो या दो से अधिक तालिकाओं में है (और इस प्रकार दोनों तालिकाओं से डेटा निकालने के लिए एक जॉइन की आवश्यकता होती है) , आपको एक बनाना होगासामान्यीकृत (पहले) टेबल या टेबलदृष्टिकोण उन सभी डेटा के साथ जिन्हें आप एक डेटासेट के रूप में उपलब्ध करना चाहते हैंERDDAP।

बड़े, जटिल डेटाबेस के लिए, यह विभिन्न प्रकार के डेटा के साथ अलग-अलग टेबल्स के रूप में अलग करने के लिए समझ सकता है, जो अलग-अलग डेटासेट बन जाएगा।ERDDAP।

उपयोग के लिए एक असामान्य तालिका बनानाERDDAP™आप के लिए एक पागल विचार की तरह लग सकता है। कृपया हमें विश्वास करें। कई कारण क्यों हैंERDDAP™denormalized टेबल के साथ काम करता है:

  • यह उपयोगकर्ताओं के लिए बहुत आसान है। कबERDDAP™डेटासेट को एक, सरल, denormalized, एकल तालिका के रूप में प्रस्तुत करता है, डेटा को समझने के लिए किसी के लिए बहुत आसान है। अधिकांश उपयोगकर्ताओं ने कभी सामान्य तालिका के बारे में नहीं सुना है, और बहुत कम कुंजी, विदेशी कुंजी, या टेबल में शामिल होने को समझते हैं, और वे लगभग निश्चित रूप से विभिन्न प्रकार के शामिल होने का विवरण नहीं जानते हैं, या SQL को एक जुड़ने के लिए कैसे निर्दिष्ट करें (या एकाधिक जुड़ना) सही ढंग से। एक असामान्य तालिका का उपयोग उन सभी समस्याओं से बचा जाता है। यह कारण अकेले डेटासेट की प्रस्तुति के लिए एक denormalized एकल तालिका के उपयोग को सही ठहराता हैERDDAP™उपयोगकर्ता  
  • सामान्यीकृत तालिका (कुंजी स्तंभों से संबंधित कई तालिकाएं) डेटाबेस में डेटा संग्रहीत करने के लिए बहुत अच्छा है। लेकिन SQL में भी, परिणाम जो उपयोगकर्ता को लौटा दिया जाता है, एक denormalized है (शामिल) एकल तालिका। इसलिए उपयोगकर्ताओं को डेटासेट को एक विशाल, denormalized, एकल तालिका के रूप में पेश करना उचित लगता है, जिसके बाद वे सबसेट का अनुरोध कर सकते हैं। (उदाहरण के लिए, मुझे टेबल की पंक्तियों को दिखाएं जहां तापमान> 30) ।  
  • आप बदलाव कर सकते हैंERDDAP™अपनी तालिका बदलने के बिना। ERDDAP™कुछ आवश्यकताएं हैं जो आपके डेटाबेस को कैसे सेट किया गया है, से अलग हो सकती हैं। उदाहरण के लिए,ERDDAP™उस टाइमस्टैम्प डेटा को 'टाइमस्टैम्प विद टाइमज़ोन' फ़ील्ड में संग्रहीत किया जाना चाहिए। के लिए एक अलग टेबल/view बनाने के द्वाराERDDAP™यदि आप इन बदलावों को बना सकते हैं, तो आप इन बदलावों को तब कर सकते हैं जब आप असामान्य तालिका बनाते हैंERDDAP। इस प्रकार, आपको अपनी सारणी में कोई बदलाव नहीं करना पड़ता है।  
  • ERDDAP™सामान्यीकृत तालिकाओं की संरचना में से कुछ को फिर से बनाया जाएगा। आप यह निर्दिष्ट कर सकते हैं कि कौन से कॉलम डेटा 'बाहरी' टेबल से आते हैं और इसलिए इसमें सीमित संख्या में विशिष्ट मान होते हैं।ERDDAP™इन स्तंभों में मूल्यों के सभी विभिन्न संयोजनों को इकट्ठा करेगा और उन्हें एक विशेष पर उपयोगकर्ताओं को पेश करेगा। सबसेट वेब पेज जो उपयोगकर्ताओं को डेटासेट के सबसेट का चयन करने में मदद करता है। प्रत्येक स्तंभ के लिए अलग-अलग मूल्यों को डेटासेट के अन्य वेब पृष्ठों पर ड्रॉप-डाउन सूचियों में भी दिखाया गया है।  
  • एक denormalized तालिका आप से डेटा हाथ से बंद करने के लिए बनाता हैERDDAPव्यवस्थापक आसान। आप इस डेटासेट के विशेषज्ञ हैं, इसलिए यह समझ में आता है कि आप किस टेबल और कौन से कॉलम में शामिल होने के बारे में निर्णय लेते हैं। इसलिए हमें हाथ नहीं देना चाहिए (या बदतर, अंतिम उपयोगकर्ता) कई तालिकाओं और उनके साथ जुड़ने के लिए विस्तृत निर्देश, आपको बस हमें denormalized तालिका तक पहुंच देना होगा।  
  • एक denormalized तालिका डेटा तक कुशल पहुंच की अनुमति देती है। सामान्यीकृत रूप आमतौर पर सामान्यीकृत रूप से उपयोग करने के लिए तेजी से होता है। जुड़ना धीमा हो सकता है। एकाधिक जुड़ना बहुत धीमा हो सकता है।  

डेटाबेस में दो या अधिक तालिकाओं से डेटा प्राप्त करने के लिएERDDAP™तीन विकल्प हैं:  

  • अनुशंसित विकल्प: आप एक कॉमा- या टैब-सेपरेटेड-वैल्युम फ़ाइल बना सकते हैं, जिसमें डेटा को denormalized टेबल से जोड़ा जा सकता है। यदि डेटासेट विशाल है, तो यह कई फ़ाइलों को बनाने के लिए समझ में आता है, प्रत्येक में denormalized तालिका का एक सामंजस्यपूर्ण सबसेट होता है। (उदाहरण के लिए, एक छोटी समय सीमा से डेटा) ।

यहाँ बड़ा लाभ यह है किERDDAP™अपने डेटाबेस द्वारा किसी भी आगे प्रयास के बिना डेटा के लिए उपयोगकर्ता अनुरोधों को संभालने में सक्षम होगा। तोERDDAP™अपने डेटाबेस या सुरक्षा जोखिम पर बोझ नहीं होगा। यह लगभग सभी परिस्थितियों में सबसे अच्छा विकल्प है क्योंकिERDDAP™आमतौर पर डेटाबेस से तेज़ फ़ाइलों से डेटा प्राप्त कर सकते हैं (यदि हम .csv फ़ाइलों को परिवर्तित करते हैं.ncCF फ़ाइलें) । (कारण का हिस्सा यह है किERDDAP+ फाइलें एक पठनीय प्रणाली है और इसमें परिवर्तन करने के साथ सौदा नहीं करना पड़ता है जबकि प्रदान करनाएसीआईडी (Atomicity, Consistency, अलगाव, स्थायित्व) ।) इसके अलावा, आपको शायद एक अलग सर्वर की आवश्यकता नहीं होगी क्योंकि हम अपने RAIDs में से एक पर डेटा स्टोर कर सकते हैं और इसे मौजूदा के साथ एक्सेस कर सकते हैं।ERDDAP™मौजूदा सर्वर पर।

  • ओके विकल्प: आप केवल denormalized तालिका के साथ एक अलग कंप्यूटर पर एक नया डेटाबेस स्थापित किया है। चूंकि उस डेटाबेस को मारिया डीबी, MySQL और PostgreSQL जैसे एक मुक्त और खुला स्रोत डेटाबेस हो सकता है, इसलिए इस विकल्प को बहुत ज्यादा खर्च नहीं करना चाहिए।

यहाँ बड़ा लाभ यह है किERDDAP™अपने वर्तमान डेटाबेस द्वारा किसी भी आगे प्रयास के बिना डेटा के लिए उपयोगकर्ता अनुरोधों को संभालने में सक्षम होगा। तोERDDAP™अपने वर्तमान डेटाबेस पर बोझ नहीं होगा। इससे सुरक्षा चिंताओं को भी समाप्त हो जाता हैERDDAP™आपके वर्तमान डेटाबेस तक पहुंच नहीं होगी।

  • प्रकटीकरण विकल्प: हम कनेक्ट कर सकते हैंERDDAP™अपने वर्तमान डेटाबेस में। ऐसा करने के लिए, आपको इसकी आवश्यकता है:

    • एक अलग तालिका बनाएं या डेटा की denormalized तालिका के साथ देखें।
    • एक "erddap" उपयोगकर्ता बनाएं, जिन्होंने केवल denormalized टेबल तक पहुंच हासिल की है (s) ।  

यह एक विकल्प है यदि डेटा बहुत बार बदलता है और आप देना चाहते हैंERDDAP™उपयोगकर्ताओं को उन परिवर्तनों तक तत्काल पहुंच; हालांकि, यहां तक कि, यह ऊपर और समय-समय पर फ़ाइल विकल्प का उपयोग करने के लिए समझ सकता है (हर 30 मिनट?) उस फाइल को प्रतिस्थापित करें जिसका आज का डेटा है। इस दृष्टिकोण का विशाल नुकसान यह है किERDDAP™उपयोगकर्ता अनुरोध शायद आपके डेटाबेस पर एक बेहद बड़ा बोझ होगा और यह किERDDAP™कनेक्शन एक सुरक्षा जोखिम है (हालांकि हम जोखिम को कम / प्रबंधित कर सकते हैं) ।

denormalized टेबल बनाना या देखने के लिएERDDAP™कुछ बदलाव करने का एक अच्छा अवसर हैERDDAP™जरूरत है, एक तरह से जो आपकी मूल तालिका को प्रभावित नहीं करता है:

  • डेटा टाइप का उपयोग करने के लिए तारीख और टाइमस्टैम्प फ़ील्ड / कॉलम बदलें जो पोस्टग्रेस कॉल करता हैसमय क्षेत्र के साथ टाइमस्टैम्प (या अपने डेटाबेस में बराबर) । टाइम ज़ोन सूचना के बिना टाइमस्टैम्प सही ढंग से काम नहीं करते हैंERDDAP।
  • उन स्तंभों के लिए सूचकांक बनाना जो उपयोगकर्ता अक्सर खोजते हैं।
  • बहुत जागरूक होनाक्षेत्र / स्तंभ नाम का मामला (उदाहरण के लिए, सभी लोअरकेस का उपयोग करें) जब आप उन्हें टाइप करते हैं।
  • तालिका के लिए और फ़ील्ड / कॉलम नाम के लिए आरक्षित शब्दों का उपयोग न करें।

यदि आपको denormalized टेबल बनाने या देखने में मदद की आवश्यकता है, तो कृपया अपने डेटाबेस प्रशासक से संपर्क करें। यदि आप इस पूरे दृष्टिकोण के बारे में बात करना चाहते हैं या इसे करने का सबसे अच्छा तरीका बताते हैं, तो कृपया क्रिस को ईमेल करें। जॉन at noaa.gov.

डेटाबेसdatasets.xml

सही बनाना मुश्किल हैdatasets.xmlके लिए आवश्यक जानकारीERDDAP™डेटाबेस से कनेक्शन स्थापित करने के लिए। रोगी बनें व्यवस्थित रहें।

  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।

जनगणना Xml में EDDTableFromDatabase के लिए तीन विशेष विकल्प हैं:

  1. यदि आप "{{{{{}{}}{}{}}{}}}{}}{}}}{}}}{}}{}}{}}{}}{}}{}}{}}}{}}}{}}{}}{}}}}{}}{}}}}{}}}}}}}{}{}}}}{}}}{}}{}{}{}{}{}}{}}}{}{}{}}{}{}}{}{}{}}{}{}}{}}}}}}}}{}}}}}}}}}}}{}{}}}}}}}}}}}}}}{}}}}}}}}}}}}}}}}}}}}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{ (उद्धरण के बिना) सूची नाम के लिए, कार्यक्रम सूची नामों की एक सूची प्रदर्शित करेगा।
  2. यदि आप "{{{{{}{}}{}{}}{}}}{}}{}}}{}}}{}}{}}{}}{}}{}}{}}{}}}{}}}{}}{}}{}}}}{}}{}}}}{}}}}}}}{}{}}}}{}}}{}}{}{}{}{}{}}{}}}{}{}{}}{}{}}{}{}{}}{}{}}{}}}}}}}}{}}}}}}}}}}}{}{}}}}}}}}}}}}}}{}}}}}}}}}}}}}}}}}}}}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{ (उद्धरण के बिना) स्कीमा नाम के लिए, कार्यक्रम स्कीमा नामों की एक सूची प्रदर्शित करेगा।
  3. यदि आप "{{{{{}{}}{}{}}{}}}{}}{}}}{}}}{}}{}}{}}{}}{}}{}}{}}}{}}}{}}{}}{}}}}{}}{}}}}{}}}}}}}{}{}}}}{}}}{}}{}{}{}{}{}}{}}}{}{}{}}{}{}}{}{}{}}{}{}}{}}}}}}}}{}}}}}}}}}}}{}{}}}}}}}}}}}}}}{}}}}}}}}}}}}}}}}}}}}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{ (उद्धरण के बिना) तालिका नाम के लिए, कार्यक्रम टेबल और उनके स्तंभों की सूची प्रदर्शित करेगा। पहले "!!!List!!!" प्रविष्टि जिसे आप बनाते हैं वह है जिसका उपयोग किया जाएगा।
  • EDDTableFromDatabase के बारे में इस दस्तावेज़ की सभी जानकारी को ध्यान से पढ़ें।
  • आप डेटाबेस प्रशासक से संपर्क करके और वेब खोज करके एक EDDTableFromDatabase डेटासेट के लिए XML बनाने के लिए आवश्यक अधिकांश जानकारी इकट्ठा कर सकते हैं।
  • हालांकि डेटाबेस अक्सर एक मामले के प्रति संवेदनशील तरीके से कॉलम नाम और टेबल नामों का इलाज करते हैं, वे मामले-संवेदनशील होते हैंERDDAP। इसलिए यदि डेटाबेस से त्रुटि संदेश का कहना है कि स्तंभ का नाम अज्ञात है (उदाहरण के लिए, "अज्ञात पहचानकर्ता= ' कॉलम \_name ') हालांकि आप जानते हैं कि यह मौजूद है, सभी पूंजीयों का उपयोग करने की कोशिश करें, उदाहरण के लिए, COLUMN_NAME , जो अक्सर स्तंभ नाम का सही, केस-संवेदनशील संस्करण होता है।
  • डेटाबेस प्रशासक के साथ मिलकर काम करें, जिनके पास प्रासंगिक अनुभव हो सकता है। यदि डेटासेट लोड करने में विफल रहता है, तो पढ़ेंत्रुटि संदेशध्यान से पता लगाने के लिए क्यों।  

JDBC ड्राइवर

  • [JDBC Driver]<ड्राइवर नाम> (#jdbc-driver) -- आपको अपने डेटाबेस के लिए उपयुक्त JDBC 3 या JDBC 4 ड्राइवर .jar फ़ाइल प्राप्त करनी होगी और इसे अंदर रखें tomcat / Webapps/erddap/WEB-INF/lib स्थापित करने के बादERDDAP। फिर, अपने आप मेंdatasets.xmlइस डेटासेट के लिए आपको निर्दिष्ट करना होगा<ड्राइवरनाम (दुर्भाग्य से) फ़ाइल नाम से अलग। अपने डेटाबेस और ड्राइवर नाम के लिए JDBC ड्राइवर के लिए वेब पर खोजेंJavaइसका उपयोग करने की जरूरत है।

    • मारिया डीबी के लिए, प्रयास करें https://mariadb.com/kb/en/about-the-mariadb-java-client/
      The The most of the<चालकनाम> में उपयोग करने के लिएdatasets.xml (नीचे देखें) शायद org.mariadb.jdbc है। चालक
    • MySQL और Amazon RDS के लिए, कोशिश करें https://dev.mysql.com/downloads/connector/j/
      The The most of the<चालकनाम> में उपयोग करने के लिएdatasets.xml (नीचे देखें) शायद com.mysql.jdbc है। चालक
    • के लिएOracleकोशिश करो https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html । The The most of the<चालकनाम> में उपयोग करने के लिएdatasets.xml (नीचे देखें) शायद oracle.jdbc.driver है।Oracleचालक
    • Postgresql के लिए, हमें JDBC 4 ड्राइवर से मिला https://mvnrepository.com/artifact/org.postgresql/postgresql
      The The most of the<चालकनाम> में उपयोग करने के लिएdatasets.xml (नीचे देखें) शायद org.postgresql है। चालक
    • SQL सर्वर के लिए, आप JTDS JDBC ड्राइवर से प्राप्त कर सकते हैं https://jtds.sourceforge.net । The The most of the<चालकनाम> में उपयोग करने के लिएdatasets.xml (नीचे देखें) शायद net.sourceforge.jtds.jdbc है। चालक

बाद में आप JDBC ड्राइवर .jar डाल दियाERDDAP™lib डायरेक्टरी, आपको उस .jar फ़ाइल के लिए एक संदर्भ जोड़ने की आवश्यकता है। Xml, DasDds, और पुरालेखADataset जो में हैं tomcat /webapps/erddap/WEB-INF/ निर्देशिका; अन्यथा, जब आप उन लिपियों को चलाते हैं तो आपको ClassNotFoundException मिलेगा।

दुर्भाग्य से, JDBC कभी-कभी परेशानी का स्रोत होता है। अपनी भूमिका में बीच के बीच मध्यस्थ के रूप मेंERDDAP™और डेटाबेस, यह कभी-कभी मानक / सामान्य डेटाबेस SQL अनुरोध पर सूक्ष्म परिवर्तन करता है किERDDAP™बनाता है, जिससे समस्याएं पैदा होती हैं (उदाहरण के लिए, संबंधितऊपरी / निचले पहचानकर्ताऔर संबंधिततारीख / समय) । कृपया रोगी बनें, जानकारी को ध्यान से पढ़ें, अपने काम की जांच करें और हमारे बारे में देखेंअतिरिक्त समर्थन प्राप्त करने पर अनुभाग

डेटाबेस<कनेक्शन संपत्ति>

  • [<कनेक्शनProperty> (#database-connectionproperty) -- मेंdatasets.xmlअपने डेटासेट के लिए, आपको कई कनेक्शन परिभाषित करना होगा संपत्ति टैग बताने के लिएERDDAP™अपने डेटाबेस से कैसे कनेक्ट करें (उदाहरण के लिए, उपयोगकर्ता नाम, पासवर्ड, एसएसएल कनेक्शन और निर्दिष्ट करने के लिएआकार) । ये हर स्थिति के लिए अलग-अलग होते हैं और यह समझने में थोड़ा मुश्किल होता है। अपने डेटाबेस से जुड़ने के लिए JDBC ड्राइवर का उपयोग करने के उदाहरणों के लिए वेब खोजें। The The most of the<कनेक्शनProperty> नाम (उदाहरण के लिए, "उपयोगकर्ता", "पासवर्ड", और "ssl") , और कुछ कनेक्शनProperty मान "JDBC कनेक्शन गुण के लिए वेब खोजकर पाया जा सकता है डेटाबेस प्रकार " (उदाहरण के लिए,Oracle, MySQL, Amazon RDS, MariaDB, PostgreSQL) ।  

नाम और केस संवेदनशीलता के लिए उद्धरण

  • फील्ड / कॉलम नाम के लिए उद्धरण; केस संवेदनशीलताडिफ़ॉल्ट रूप से, EDDTableFromDatabase ने SELECT स्टेटमेंट में फ़ील्ड / कॉलम नामों के आसपास ANSI-SQL-standard डबल उद्धरणों को रखा है, अगर आपने फ़ील्ड / कॉलम नाम के रूप में आरक्षित शब्द का उपयोग किया है, या फ़ील्ड / कॉलम नाम में एक विशेष चरित्र। डबल उद्धरण भी SQL इंजेक्शन हमलों के कुछ प्रकार thwart। आप बता सकते हैंERDDAP™उपयोग करने के लिए ", ', या कोई उद्धरण के माध्यम से<स्तंभनाम Quotes> मेंdatasets.xmlइस डेटासेट के लिए।

कई डेटाबेस के लिए, किसी भी प्रकार के उद्धरणों का उपयोग करके डेटाबेस को किसी मामले में संवेदनशील तरीके से फ़ील्ड / कॉलम नामों के साथ काम करने का कारण बनता है। (डिफ़ॉल्ट डेटाबेस मामले के बजाय असंवेदनशील तरीके से) । डेटाबेस अक्सर फ़ाइल / कॉलम नाम को सभी ऊपरी-मामले के रूप में प्रदर्शित करते हैं, जब वास्तव में मामला संवेदनशील रूप अलग होता है। मेंERDDAP™, कृपया हमेशा डेटाबेस कॉलम नामों को मामले संवेदनशील मानते हैं।

  • मारिया के लिए डीबी, आपको डेटाबेस को चलाने की आवश्यकता है\-sql-mode=ANSI \_QUOTES

  • MySQL और Amazon RDS के लिए, आपको डेटाबेस को चलाने की आवश्यकता है\-sql-mode=ANSI \_QUOTES

  • OracleANSI-SQL मानक डबल उद्धरण का समर्थन करता हैडिफ़ॉल्ट रूप से

  • PostgreSQL डिफ़ॉल्ट रूप से ANSI-SQL मानक डबल उद्धरण का समर्थन करता है।

डेटाबेस, कैटलॉग, स्कीमा या टेबल के नाम के लिए आरक्षित शब्द का उपयोग न करें।ERDDAP™उनके आसपास उद्धरण नहीं डालता है।

यदि संभव हो तो डेटाबेस टेबल बनाते समय डेटाबेस, कैटलॉग, स्कीमा, टेबल नाम और फील्ड नामों के लिए सभी लोअर-केस का उपयोग करें (या राय) और जब फ़ील्ड / कॉलम नामों को संदर्भित करता हैdatasets.xmlमेंERDDAP। अन्यथा, आपको डेटाबेस, कैटलॉग, स्कीमा, टेबल और/या फ़ील्ड कहकर त्रुटि संदेश मिल सकता है। यदि आप उस त्रुटि संदेश प्राप्त करते हैं, तो केस-संवेदनशील संस्करण का उपयोग करने का प्रयास करें, सभी ऊपरी-मामले संस्करण और नाम के सभी निचले-मामले संस्करणERDDAP। उनमें से एक काम कर सकता है। यदि नहीं, तो आपको डेटाबेस, कैटलॉग, स्कीमा और/या तालिका के नाम को सभी लोअर-केस में बदलने की आवश्यकता है।

डेटाबेस<डेटा प्रकार>

  • डेटाबेस[<Datatype> (#datatype) टैग क्योंकि कुछ अस्पष्टता है जिसके बारे मेंडेटाबेस डेटा प्रकारजिसके लिए नक्शाERDDAP™डेटा प्रकार, आपको निर्दिष्ट करने की आवश्यकता है [<Datatype> (#datatype) प्रत्येक के लिए टैग<dataVariable> (#datavariable) बताने के लिएERDDAP™कौन सा डेटाटाइप उपयोग करने के लिए। समस्या का हिस्सा यह है कि विभिन्न डेटासेट विभिन्न डेटा प्रकारों के लिए अलग-अलग शब्दों का उपयोग करते हैं - इसलिए हमेशा परिभाषाओं से मेल खाने की कोशिश करते हैं, न केवल नाम। विवरण देखेंमानकERDDAP™डेटा प्रकार, जिसमें संबंधित SQL डेटा प्रकारों के संदर्भ शामिल हैं।तारीख और टाइमस्टैम्पविशेष मामले हैं: उपयोगERDDAPदोहरे डेटा प्रकार  

डेटाबेस दिनांक समय डेटा

कुछ डेटाबेस तारीख समय स्तंभों में कोई स्पष्ट समय क्षेत्र नहीं है। ऐसे स्तंभों के लिए परेशानी होती हैERDDAP। डेटाबेस किसी तारीख की अवधारणा का समर्थन करते हैं (बिना समय के) एक समय क्षेत्र के बिना, समय की अनुमानित सीमा के रूप में। लेकिनJava (इस प्रकारERDDAP) केवल एक टाइमज़ोन के साथ तात्कालिक तारीख + समय से संबंधित है। इसलिए आपको पता चल सकता है कि डेट टाइम डेटा एक स्थानीय समय क्षेत्र पर आधारित है। (डेलाइट सेविंग टाइम के साथ या बिना) या GMT/Zuluसमय क्षेत्र, लेकिनJava (औरERDDAP) नहीं हमने मूल रूप से सोचा कि हम इस समस्या के बारे में काम कर सकते हैं (उदाहरण के लिए, स्तंभ के लिए एक समय क्षेत्र निर्दिष्ट करके) , लेकिन डेटाबेस+JDBC+Javaबातचीत ने यह एक अविश्वसनीय समाधान बनाया।

  • तो,ERDDAP™की आवश्यकता है कि आप डेटाबेस तालिका में सभी तारीख और दिनांक समय डेटा को डेटाबेस डेटा प्रकार के साथ स्टोर करते हैं जो JDBC प्रकार "समय क्षेत्र के साथ टाइमस्टैम्प" से मेल खाती है। (आदर्श रूप से, यह GMT/ का उपयोग करता हैZuluसमय क्षेत्र) ।
  • मेंERDDAP'datasets.xml, में<dataVariable> एक टाइमस्टैम्प चर के लिए टैग, सेट

      <dataType>double</dataType>

और<addAttributes> सेट

          <att name="units">seconds since 1970-01-01T00:00:00Z</att>
  • सुझाव: यदि डेटा एक समय सीमा है, तो टाइमस्टैम्प मानों को निहित समय सीमा के केंद्र को संदर्भित करने के लिए उपयोगी है। (उदाहरण के लिए, दोपहर) । उदाहरण के लिए, यदि किसी उपयोगकर्ता के पास किसी अन्य डेटासेट से 2010-03-26T13:00Z के लिए डेटा है और वे प्रत्येक दिन के लिए डेटा रखने वाले डेटाबेस डेटासेट से निकटतम डेटा चाहते हैं, तो 2010-03-26T12:00Z के लिए डेटाबेस डेटा (उस तारीख के लिए डेटा का प्रतिनिधित्व करना) जाहिर है सबसे अच्छा (पहले या बाद में मध्य रात के विपरीत, जहां यह कम स्पष्ट है जो सबसे अच्छा है) ।
  • ERDDAP™इसमें उपयोगिता हैएक न्यूमेरिक कनवर्ट करें समय-समय पर स्ट्रिंग टाइम से
  • देखेंकैसेERDDAPसमय के साथ सौदे

पूर्णांक

डेटाबेस integer में nulls समर्थन (int, smallint, smallint) स्तंभ, लेकिनERDDAP™यह सच नहीं है। डेटाबेस nulls में परिवर्तित किया जाएगाERDDAP™बाइट कॉलम के लिए 127, Ubyte कॉलम के लिए 255, लघु स्तंभों के लिए 32767, 65535 ushort स्तंभों के लिए, 2147483647 int स्तंभों के लिए, 4294967295 Uint स्तंभों के लिए, 9,223,372,036,854,775,807 लंबे स्तंभों के लिए, या 18446744073709551615 ulong स्तंभों के लिए। यदि आप उन डिफ़ॉल्ट का उपयोग करते हैं, तो कृपया उन लोगों की पहचान करेंmissing\_valueडेटासेट के उपयोगकर्ताओं के लिएERDDAP™साथ

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

या

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

वैकल्पिक रूप से, आप "missing\_value"\_FillValue" के बजाय विशेषता। जनगणना Xml स्वचालित रूप से इन \_FillValue विशेषताओं को जोड़ता है जब यह सुझाव उत्पन्न करता हैdatasets.xmlडेटाबेस डेटासेट के लिए।

डेटाबेस फ्लोटिंग पॉइंट कॉलम के लिए, nulls को NaNs में बदल दिया जाता हैERDDAP। डेटाबेस डेटा प्रकारों के लिए जो स्ट्रिंग्स में परिवर्तित होते हैंERDDAP™, nulls खाली स्ट्रिंग में परिवर्तित हो जाते हैं।

डेटाबेस सुरक्षा

  • डेटाबेस के साथ काम करते समय, आपको अपने डेटाबेस को नुकसान पहुंचाने या डेटा तक पहुंच प्राप्त करने के लिए एक दुर्भावनापूर्ण उपयोगकर्ता को अनुमति देने से बचने के लिए सुरक्षित रूप से और सुरक्षित रूप से चीजों को करने की आवश्यकता है।ERDDAP™यह भी सुरक्षित तरीके से काम करने की कोशिश करता है।
    • दोहराने पर विचार करें, एक अलग कंप्यूटर पर, डेटाबेस और डेटाबेस तालिकाओं के साथ डेटा जिसे आप चाहते हैंERDDAP™सेवा करने के लिए (हाँ, व्यावसायिक डेटाबेस के लिए जैसेOracleइसमें अतिरिक्त लाइसेंसिंग शुल्क शामिल है। लेकिन ओपन सोर्स डेटाबेस के लिए, जैसे PostgreSQL, MySQL, Amazon RDS, और MariaDB, यह लागत कुछ भी नहीं है।) यह आपको सुरक्षा का एक उच्च स्तर देता है और यह भी रोकता हैERDDAP™मूल डेटाबेस को धीमा करने के अनुरोध।
    • हम आपको स्थापित करने के लिए प्रोत्साहित करते हैंERDDAP™डेटाबेस से कनेक्ट करने के लिए एक डेटाबेस उपयोगकर्ता के रूप में जो केवल एक्सेस है प्रासंगिक डेटाबेस (s) और केवल READ विशेषाधिकार है।
    • हम आपको कनेक्शन सेट करने के लिए प्रोत्साहित करते हैंERDDAP™डेटाबेस के लिए इतना है कि यह
      • हमेशा एसएसएल का उपयोग करते हैं,
      • केवल एक आईपी पते से कनेक्शन की अनुमति देता है (या पते का एक ब्लॉक) और एक सेERDDAP™उपयोगकर्ता, और
      • केवल अपने MD5 हैश्ड फॉर्म में पासवर्ड ट्रांसफर करता है।
    • \[ज्ञानकोश\]कनेक्शनप्रस्ताव (पासवर्ड सहित!) में सादे पाठ के रूप में संग्रहीत किया जाता हैdatasets.xml। हमें व्यवस्थापक को डेटाबेस पासवर्ड में प्रवेश करने की अनुमति देने का कोई तरीका नहीं मिला हैERDDAPटॉमकैट में स्टार्टअप (जो उपयोगकर्ता इनपुट के बिना होता है) इसलिए पासवर्ड एक फ़ाइल में सुलभ होना चाहिए। इसे सुरक्षित बनाने के लिए:
      • आप (The number of theERDDAP™व्यवस्थापक) का मालिक होना चाहिएdatasets.xmlऔर READ और WRITE पहुँच है।
      • एक समूह बनाएं जिसमें केवल उपयोगकर्ता = परमाणु शामिल है। बनाने के लिए chgrp का उपयोग करें कि समूह के लिएdatasets.xml, सिर्फ READ विशेषाधिकार के साथ।
      • o-rwx विशेषाधिकार निर्दिष्ट करने के लिए chmod का उपयोग करें ("अन्य" उपयोगकर्ताओं के लिए कोई READ या WRITE एक्सेस नहीं) के लिएdatasets.xml।
    • कबERDDAP™पासवर्ड और अन्य कनेक्शन गुण "निजी" में संग्रहीत होते हैंJavaचर।
    • ग्राहकों से अनुरोधों को डेटाबेस के लिए SQL अनुरोध उत्पन्न करने से पहले वैधता के लिए parsed और जाँच की जाती है।
    • डेटाबेस के लिए अनुरोध SQL PreparedStatements के साथ किया जाता है, रोकने के लिएSQL इंजेक्शन
    • डेटाबेस के लिए अनुरोध निष्पादित के साथ प्रस्तुत कर रहे हैं क्वेरी (कार्यान्वयन नहीं) केवल पढ़ने के लिए अनुरोध को सीमित करने के लिए (इसलिए डेटाबेस को बदलने के लिए SQL इंजेक्शन का प्रयास इस कारण से विफल हो जाएगा, बहुत) ।  

SQL

  • क्योंकिOPeNDAPएसक्यूएल टैबुलर डेटा अनुरोधों को नकल करने के लिए डिज़ाइन किया गया था, इसके लिए आसान हैERDDAP™सारणीबद्ध डेटा अनुरोधों को सरल SQL PreparedStatements में परिवर्तित करने के लिए। उदाहरण के लिए,ERDDAP™अनुरोध
    time,temperature&time>=2008-01-01T00:00:00Z&time&lt;=2008-02-01T00:00:00Z  

SQL PreparedStatement में परिवर्तित किया जाएगा

    SELECT "time", "temperature" FROM *tableName*  
WHERE "time" >= 2008-01-01T00:00:00Z AND "time" &lt;= 2008-02-01T00:00:00Z

ERDDAP™अनुरोध के साथ & distinct () और / याorderBy ( चर ) DISTINCT और / या ORDER BY जोड़ेगा चर SQL तैयार बयान के लिए। सामान्य तौर पर, यह डेटाबेस से प्रतिक्रिया को बहुत धीमा कर देगा। ERDDAP™तैयारी में लॉग इन करेंलॉग-इनजैसा

    statement=*thePreparedStatement*  

यह PreparedStatement का एक पाठ प्रतिनिधित्व होगा, जो वास्तविक PreparedStatement से थोड़ा अलग हो सकता है। उदाहरण के लिए, तैयार स्टेटमेंट में, समय को एक विशेष तरीके से कोडित किया जाता है। लेकिन पाठ प्रतिनिधित्व में, वे ISO 8601 तारीख के रूप में दिखाई देते हैं।  

डेटाबेस स्पीड

  • डेटाबेस धीमी हो सकता है। कुछ चीजें आप कर सकते हैं:
    • सामान्य में - SQL की प्रकृति यह है कि प्रश्न हैंघोषणा। वे सिर्फ निर्दिष्ट करते हैं कि उपयोगकर्ता क्या चाहता है। उनमें एक विनिर्देश या संकेत शामिल नहीं हैं कि कैसे क्वेरी को संभालने या अनुकूलित करने के लिए है। इसलिए कोई रास्ता नहीं हैERDDAP™इस तरह से क्वेरी उत्पन्न करने के लिए कि यह डेटाबेस को क्वेरी को अनुकूलित करने में मदद करता है (या किसी भी तरह से निर्दिष्ट करता है कि कैसे क्वेरी को संभालना है) । सामान्य तौर पर, यह डेटाबेस प्रशासक तक है जो चीजों को सेट करने के लिए है (उदाहरण के लिए, सूचकांक) कुछ प्रकार के प्रश्नों का अनुकूलन करना।
Fetch Size

डेटाबेस डेटा वापस करने के लिएERDDAP™भाग में। डिफ़ॉल्ट रूप से, विभिन्न डेटाबेस अलग-अलग संख्या में पंक्तियों को बदल देते हैं। अक्सर यह संख्या बहुत छोटी और इतनी अक्षम होती है। उदाहरण के लिए, डिफ़ॉल्ट के लिएOracle10 है! इसे बढ़ाने के लिए सेट करने के लिए कनेक्शन संपत्ति खोजने के लिए अपने डेटाबेस के JDBC ड्राइवर के लिए JDBC प्रलेखन पढ़ें, और इसे डेटासेट के विवरण में जोड़ेंdatasets.xml। उदाहरण के लिए, MySQL और Amazon RDS के लिए, उपयोग करें

        <connectionProperty name="defaultFetchSize">10000</connectionProperty>  

MariaDB के लिए, वर्तमान में लाने के आकार को बदलने का कोई तरीका नहीं है। लेकिन यह एक अनुरोधित सुविधा है, इसलिए वेब को देखने के लिए खोज करें कि क्या यह लागू किया गया है। के लिएOracleउपयोग

        <connectionProperty name="defaultRowPrefetch">10000</connectionProperty>  

PostgreSQL के लिए उपयोग करें

        <connectionProperty name="defaultRowFetchSize">10000</connectionProperty>  

लेकिन नंबर बदलने के लिए स्वतंत्र महसूस करें। संख्या को भी बड़ा करनाERDDAP™कई स्मृतियों का उपयोग करने और स्मृति से बाहर निकलने की संभावना अधिक है।

कनेक्शनप्रस्ताव

प्रत्येक डेटाबेस में अन्य कनेक्शन गुण होते हैं जिन्हें निर्दिष्ट किया जा सकता हैdatasets.xml। इनमें से कई डेटाबेस के प्रदर्शन को प्रभावित करेंगेERDDAP™कनेक्शन। विकल्प देखने के लिए कृपया अपने डेटाबेस के JDBC ड्राइवर के लिए प्रलेखन पढ़ें। यदि आप उन कनेक्शन गुणों को ढूंढते हैं जो उपयोगी हैं, तो कृपया विवरण के साथ एक ईमेल भेजेंerd dot data at noaa dot gov।

  • टेबल बनाना यदि आप समय-समय पर तेजी से प्रतिक्रियाएं प्राप्त करेंगे (रोज़ाना? जब भी नया डेटा होता है?) वास्तविक तालिका उत्पन्न करना (इसी तरह आप कैसे दृष्टिकोण उत्पन्न करने के लिए) और कहाERDDAP™देखने के बजाय तालिका से डेटा प्राप्त करने के लिए। चूंकि तालिका के किसी भी अनुरोध को फिर किसी अन्य तालिका में शामिल किए बिना पूरा किया जा सकता है, इसलिए प्रतिक्रिया बहुत तेज होगी।
  • तालिका वैक्यूम - यदि आप उपयोग करते हैं तो MySQL और अमेज़न आरडीएस बहुत तेज़ी से जवाब देगाऑप्टिमाइज़ टेबल। मारिया यदि आप उपयोग करते हैं तो डीबी बहुत तेज़ी से जवाब देगाऑप्टिमाइज़ टेबल। यदि आप पोस्टग्रेएसक्यूएल बहुत तेज़ी से जवाब देंगेवैक्यूमतालिका। Oracleएक अनुरूप आदेश की आवश्यकता नहीं है।
  • बनानासूचकांकआम तौर पर प्रतिबंधित चर के लिए -- आप चर के लिए डेटाबेस में अनुक्रमणिका बनाकर कई/अधिकांश प्रश्नों को गति दे सकते हैं (कौन सा डेटाबेस "कॉलम" कहते हैं) अक्सर उपयोगकर्ता के क्वेरी में बाधित होते हैं। सामान्य तौर पर, ये वही वैरिएबल हैं जो द्वारा निर्दिष्ट हैं [<subsetVariables> (#subsetvariables) और/या अक्षांश, देशांतर और समय चर.
कनेक्शन पूलिंग का प्रयोग

आम तौर पर,ERDDAP™प्रत्येक अनुरोध के लिए डेटाबेस के लिए एक अलग कनेक्शन बनाता है। यह सबसे विश्वसनीय दृष्टिकोण है। तेजी से विकल्प एक DataSource का उपयोग करना है जो कनेक्शन पूलिंग का समर्थन करता है। इसे सेट करने के लिए, निर्दिष्ट करें (उदाहरण के लिए)

        <dataSourceName>java:comp/env/jdbc/postgres/erddap</dataSourceName>  

आगे<sourceUrl><ड्राइवर नाम> और<कनेक्शन संपत्ति> और tomcat /conf/context.xml, समान जानकारी के साथ एक संसाधन को परिभाषित करते हैं, उदाहरण के लिए,

        <Resource  
name="jdbc/postgres/erddap" auth="Container" type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="*jdbc:postgresql://somehost:5432/myDatabaseName*"
username="*myUsername*" password="*myPassword*"
initialSize="0" maxActive="8" minIdle="0" maxIdle="0" maxWait="-1"/>

DataSource का उपयोग करने के बारे में सामान्य जानकारी है https://docs.oracle.com/javase/tutorial/jdbc/basics/sqldatasources.html । देखेंटॉमकैट डेटासोर्स जानकारीऔरटॉमकैट डेटासोर्स उदाहरणया अन्य अनुप्रयोग सर्वर के साथ DataSources का उपयोग करने के उदाहरणों के लिए वेब को खोजें।

  • यदि सब कुछ विफल रहता है, डेटा को संग्रह में संग्रहीत करने पर विचार करेंNetCDFv3.ncफ़ाइलें (विशेष रूप से.ncफ़ाइलें जो उपयोग करती हैंCF Discrete Sampling Geometries (DSG) Contiguous Ragged Array डेटा संरचनाओं और इतने के साथ संभाला जा सकता हैERDDAP'EDDTableFromNcCFFiles) । यदि वे तार्किक रूप से व्यवस्थित हैं (प्रत्येक अंतरिक्ष और समय के एक हिस्से के लिए डेटा के साथ) ,ERDDAP™उनमें से बहुत जल्दी डेटा निकाल सकते हैं।  

EDDTableFromDatabase कंकाल एक्सएमएल

  <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>

EDDTableFromEDDGrid

EDDTableFromEDDGrid आपको किसी से EDDTable डेटासेट बनाने की अनुमति देता हैEDDGridडेटासेट।

  • ऐसा करने के कुछ सामान्य कारण हैं:
    • यह डेटासेट को क्वेरी करने की अनुमति देता हैOPeNDAPचयन बाधाएं, जो "मूल्य द्वारा क्वेरी" का एक प्रकार है (जो उपयोगकर्ता अनुरोध कर सकता है) ।
    • डेटासेट स्वाभाविक रूप से एक सारणीबद्ध डेटासेट है।
  • वैश्विक विशेषता "maxAxis0" का मूल्य (आमतौर पर टाइप = "int") , (डिफ़ॉल्ट 10 है) अक्ष की संख्या को सीमित करने के लिए इस्तेमाल किया जाएगा\[0\] (आमतौर पर"time"धुरी) संलग्न मूल्यEDDGridडेटासेट जो डेटा के लिए अनुरोध के अनुसार एक्सेस किया जा सकता है। यदि आप चाहते हैं कि कोई सीमा नहीं है, तो 0 का मान निर्दिष्ट करें। यह सेटिंग महत्वपूर्ण है क्योंकि अन्यथा, उपयोगकर्ता को EDDTableFrom से पूछने के लिए यह बहुत आसान होगाEDDGridसभी ग्रिड डेटासेट के डेटा को देखने के लिए। यह एक लंबे समय तक होगा और लगभग निश्चित रूप से एक टाइमआउट त्रुटि के साथ विफल हो जाएगा। यह सेटिंग है जो EDDTableFrom को सुरक्षित बनाता हैEDDGridअपने डेटासेटERDDAPबिना डर के वे कम्प्यूटिंग संसाधनों का अनुचित उपयोग करेंगे।
  • अगर संलग्नEDDGridएक हैEDDGridसेंधऔरERDDAP™वही हैERDDAP, फिर EDDTableFromEDDGridहमेशा संदर्भित डेटासेट के वर्तमान उपलब्ध संस्करण का उपयोग करेगा। यह EDDTableFrom के लिए एक बहुत ही कुशल तरीका हैEDDGridग्रिड डेटा तक पहुंचने के लिए।
  • इस वर्ग के [<रीलोड हरNMinutes (#reloadeverynminutes) क्या मायने रखता है। संलग्नEDDGrid'<ReloadEveryNMinutes> को अनदेखा कर दिया गया है।
  • यदि कोई मूल्य है<EveryNMillis (#updateeverynmillis) इस डेटासेट के लिए आपूर्ति की जाती है, इसे नजरअंदाज कर दिया जाता है। संलग्नEDDGrid'<अद्यतनEveryNMillis> क्या मायने रखता है।
  • जनरेट DatasetXmlDataset type=EDDTableFrom के लिए एक विकल्प हैEDDGridजो यूआरएल के लिए पूछता हैERDDAP (आमतौर पर समानERDDAP) ("/erddap/" में समाप्त) और एक नियमित अभिव्यक्ति। जनगणना तब XML एक EDDTableFrom के लिए XML उत्पन्न करेगाEDDGridप्रत्येक ग्रिड डेटासेट के लिए डेटासेटERDDAP™जो एक हैdatasetIDजो नियमित अभिव्यक्ति से मेल खाता है (सभी मैच करने के लिएdatasetIDग्रिड डेटासेट के लिए S) ।

प्रत्येक डेटासेट के लिए जनरेटडाटासेटएक्सएमएल द्वारा उत्पन्न XML का हिस्सा शामिल है:

  • AdatasetIDजो हैEDDGrid'datasetIDप्लस "\_AsATable"।
  • एक नया सारांश वैश्विक विशेषता जो हैEDDGridसारांश प्लस एक नया पहला अनुच्छेद जिसमें यह वर्णन किया गया है कि यह डेटासेट क्या है।
  • एक नया शीर्षक वैश्विक विशेषता जो हैEDDGridशीर्षक प्लस ", (A table) "।
  • 10 के मान के साथ एक नया मैक्सएक्सिस0 वैश्विक विशेषता

EDDTableFromEDDGridकंकाल 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>

EDDTableFromFileNames

EDDTableFromFileNames सर्वर की फ़ाइल सिस्टम में फ़ाइलों के एक समूह के बारे में जानकारी से डेटासेट बनाता है, जिसमें प्रत्येक फ़ाइल के लिए एक यूआरएल शामिल है ताकि उपयोगकर्ता फ़ाइलों को डाउनलोड कर सकेंERDDAP'"files"प्रणाली। सभी के विपरीतEDDTableFromFilesउपवर्ग, यह डेटासेट प्रकार फ़ाइलों के भीतर से डेटा की सेवा नहीं करता है।

  • EDDTableFromFileNames कब उपयोगी है:
    • आपके पास उन फ़ाइलों का एक समूह है जिन्हें आप पूरी फाइलों के रूप में वितरित करना चाहते हैं क्योंकि उनमें "डेटा" को उसी तरह शामिल नहीं किया गया है कि नियमित डेटा फ़ाइलों में डेटा होता है। उदाहरण के लिए, छवि फ़ाइलों, वीडियो फ़ाइलों, वर्ड दस्तावेजों, एक्सेल स्प्रेडशीट फ़ाइलों, PowerPoint प्रस्तुति फ़ाइलों, या unstructured पाठ के साथ पाठ फ़ाइलों।
    • आपके पास फ़ाइलों का एक समूह है जिसमें एक प्रारूप में डेटा होता हैERDDAP™अभी तक पढ़ा नहीं जा सकता। उदाहरण के लिए, एक परियोजना-विशिष्ट, कस्टम, द्विआधारी प्रारूप।  

EDDTableFromFileNames डेटा

  • एक EDDTableFromFileNames Dataset में डेटाएक सारणी है किERDDAP™स्थानीय फ़ाइलों के समूह के बारे में जानकारी के साथ ऑन-द-फ्लाई बनाता है। तालिका में प्रत्येक फ़ाइल के लिए एक पंक्ति है। में चार विशेष गुणdatasets.xmlइस डेटासेट के लिएयह निर्धारित करना कि इस डेटासेट में कौन सी फाइलें शामिल होंगी:
फ़ाइल दीर
  • <फ़ाइल यह सर्वर की फ़ाइल प्रणाली में इस डेटासेट के लिए फ़ाइलों के साथ स्रोत निर्देशिका निर्दिष्ट करता है। वास्तव में सर्वर की फ़ाइल प्रणाली में स्थित फाइलें<फ़ाइलDir> एक आभासी निर्देशिका के भीतर इस डेटासेट के यूआरएल कॉलम में दिखाई देगा जिसका नाम है https://serverUrl/erddap/files/datasetID/ । उदाहरण के लिए, यदिdatasetIDJplMU हैRSSटी और<फ़ाइलDir> है /home/data/mur/ , और उस निर्देशिका में jplmu नामक एक फ़ाइल हैRSST20150103000000.png तब यूआरएल जो उस फाइल के लिए उपयोगकर्ताओं को दिखाया जाएगा https://serverUrl/erddap/jplMURSST/jplMURSST20150103000000.png ।

स्थानीय निर्देशिका का उपयोग करने के अलावा<फ़ाइलDir>, आप दूरस्थ, निर्देशिका जैसी वेब पेज के यूआरएल को भी निर्दिष्ट कर सकते हैं। यह काम करता है:

fromOnTheFly

\*\** FromOnTheFly-- कुछ विशाल S3 बाल्टी के लिए (Noaa-goes17 की तरह, जिसमें 26 मिलियन फाइलें हैं) हो सकता हैERDDAP™बाल्टी की सामग्री के बारे में सभी जानकारी डाउनलोड करने के लिए 12 घंटे तक (और फिर अन्य समस्याएं हैं) । इसके आसपास जाने के लिए, उपयोग करने का एक विशेष तरीका है<फ़ाइलDir> EDDTableFromFileNames में AWS S3 बाल्टी से निर्देशिका और फ़ाइल नामों के साथ डेटासेट बनाने के लिए। डेटासेट में सभी S3 बाल्टी की निर्देशिकाओं और फ़ाइल नामों की सूची नहीं होगी जो एक उपयोगकर्ता डेटासेट के अनुरोध के माध्यम से खोज सकता है। लेकिन डेटासेट को निर्देशिकाओं और फ़ाइलों के नामों को ऑन-द-फ्लाई मिलेगी यदि उपयोगकर्ता डेटासेट के साथ निर्देशिका पदानुक्रमित करता है"files"विकल्प इस प्रकार, यह उपयोगकर्ताओं को डेटासेट के माध्यम से S3 बाल्टी की फ़ाइल पदानुक्रम और फ़ाइलों को ब्राउज़ करने की अनुमति देता है"files"प्रणाली। ऐसा करने के बजाय, S3 बाल्टी के लिए URL निर्दिष्ट करने के बजाय "शुरू निर्देशिका" के रूप में (में GenerateDatasets एक्सएमएल) या<फ़ाइल (मेंdatasets.xml) उपयोग:

\\*\\*\\*fromOnTheFly,*theS3BucketUrl*  

उदाहरण के लिए:

\\*\\*\\*fromOnTheFly,https://noaa-goes17.s3.us-east-1.amazonaws.com/  

प्रलेखन देखेंS3 बाल्टी के साथ काम करनाERDDAP™विशेष रूप से विशिष्ट प्रारूप का वर्णन जिसे S3 बाल्टी URL के लिए इस्तेमाल किया जाना चाहिए। और देखें ये विवरण और उदाहरणउपयोग करना\*\**OntheFly से।

पुनरावर्ती
  • <पुनरावर्ती> -- के उपनिर्देशों में फ़ाइलें<फ़ाइलDir> नाम जो मैच के साथ<फ़ाइलRegex> उसी उपनिर्देशों में दिखाई देगी"files"अगर यूआरएल<पुनरावर्ती> सही करने के लिए सेट किया गया है। डिफ़ॉल्ट गलत है।
  • [<पथRegex> (#pathregex) -- यदि Recursive=true, तो केवल डायरेक्टरी नाम जो पथRegex से मेल खाते हैं (डिफ़ॉल्ट) स्वीकार किया जाएगा। यदि पुनरावर्ती = झूठ, तो इसे अनदेखा किया जाता है। यह शायद ही कभी इस्तेमाल किया जाता है, लेकिन असामान्य परिस्थितियों में बहुत उपयोगी हो सकता है। (इसे देखेंरेगेक्स प्रलेखनऔरRegex ट्यूटोरियल।)
फ़ाइल
  • <फ़ाइल केवल फ़ाइल नाम जहां पूरे फ़ाइल नाम (निर्देशिका नाम शामिल नहीं है) मैच<फ़ाइलRegex> इस डेटासेट में शामिल किया जाएगा। उदाहरण के लिए, jplmuRSSPNG. (इसे देखेंरेगेक्स प्रलेखनऔरRegex ट्यूटोरियल।)
     
फ़ाइल नाम डेटा तालिका सामग्री से

तालिका में, इसके साथ स्तंभ होंगे:

  • यूआरएल वह URL जो उपयोगकर्ता फ़ाइल को डाउनलोड करने के लिए उपयोग कर सकते हैंERDDAP'"files"प्रणाली

  • नाम फ़ाइल का नाम (निर्देशिका नाम के बिना) ।

  • अंतिम संशोधित -- फ़ाइल को आखिरी बार संशोधित किया गया था (के साथ डबल्स के रूप में संग्रहीत"seconds since 1970-01-01T00:00:00Z") । यह चर उपयोगी है क्योंकि उपयोगकर्ता देख सकते हैं कि क्या/जब किसी दिए गए फ़ाइल की सामग्री बदल दी गई है। यह चर एक हैसमय मुद्रा परिवर्तनीयइसलिए डेटा संख्यात्मक मान के रूप में दिखाई दे सकता है (1970-01-01T00:00:00Z) या स्ट्रिंग मान (आईएसओ 8601:2004 (E) स्वरूप) स्थिति के आधार पर।

  • आकार - बाइट्स में फ़ाइल का आकार, डबल्स के रूप में संग्रहीत होता है। उन्हें डबल्स के रूप में संग्रहीत किया जाता है क्योंकि कुछ फाइलें इंट की अनुमति से बड़ी हो सकती हैं और कुछ प्रतिक्रिया फ़ाइल प्रकारों में लंबे समय तक समर्थित नहीं हैं। डबल्स सटीक आकार देंगे, यहां तक कि बहुत बड़ी फ़ाइलों के लिए भी।

  • इसके अलावा कॉलम द्वारा परिभाषितERDDAP™प्रशासक के साथ जानकारी निकालने से फ़ाइल नाम (उदाहरण के लिए, फ़ाइल में डेटा से जुड़े समय) दो विशेषताओं के आधार पर जो आप प्रत्येक अतिरिक्त कॉलम के लिए मेटाडाटा में निर्दिष्ट करते हैं /dataVariable:

    • निकालने Regex यह एक हैनियमित अभिव्यक्ति (ट्यूटोरियल) । पूरे रेगेक्स को पूरे फाइल नाम से मिलान करना चाहिए (निर्देशिका नाम शामिल नहीं है) । रेगेक्स में कम से कम एक कैप्चर समूह शामिल होना चाहिए (एक नियमित अभिव्यक्ति का एक खंड जो माता-पिता द्वारा संलग्न है) जोERDDAP™यह निर्धारित करने के लिए उपयोग करता है कि डेटा बनने के लिए फ़ाइल नाम का कौन-सा खंड निकाला जाए।
    • निकालने समूह यह कैप्चर समूह की संख्या है (#1 पहला कैप्चर ग्रुप है) नियमित अभिव्यक्ति में। डिफ़ॉल्ट 1 है। एक कैप्चर समूह एक नियमित अभिव्यक्ति का एक अनुभाग है जो माता-पिता द्वारा संलग्न है।

यहाँ दो उदाहरण हैं:

            <dataVariable>
<sourceName>time</sourceName>
<destinationName>time</destinationName>
<dataType>String</dataType>
<addAttributes>
<att name="extractRegex">jplMURSST(.{14})\\.png</att>
<att name="extractGroup" type="int">1</att>
<att name="units">yyyyMMddHHmmss</att>
</addAttributes>
</dataVariable>
            <dataVariable>
<sourceName>day</sourceName>
<destinationName>day</destinationName>
<dataType>int</dataType>
<addAttributes>
<att name="extractRegex">jplMURSST.{6}(..).{6}\\.png</att>
<att name="extractGroup" type="int">1</att>
<att name="ioos\\_category">Time</att>
</addAttributes>
</dataVariable>

समय चर के मामले में, यदि किसी फ़ाइल का नाम jplmu हैRSST20150103000000.png, extractRegex फ़ाइल नाम से मेल खाता है, पात्रों को निकालता है जो पहले कैप्चर समूह से मेल खाता है। ("20150103000000") डेटा टाइप = स्ट्रिंग के रूप में, फिर उपयोग करेंस्ट्रिंग समय के लिए उपयुक्त इकाइयोंस्ट्रिंग को समय-समय पर डेटा मानों में पार करने के लिए (2015-01-03T00:00:00Z) ।

यदि किसी फ़ाइल का नाम jplMU है तो दिन चर के मामले मेंRSST20150103000000.png, extractRegex फ़ाइल नाम से मेल खाता है, पात्रों को निकालता है जो पहले कैप्चर समूह से मेल खाता है। ("03") []<Datatype> (#datatype) \=int, 3 का डेटा मान पैदा करना।

अन्य जानकारी

  • नहीं<EveryNMillis (#updateeverynmillis) -- इस प्रकार की डेटासेट की आवश्यकता नहीं है और इसका उपयोग नहीं किया जा सकता है<अद्यतनEveryNMillis> टैग क्योंकि EDDTableFromFileNames द्वारा सेवा की गई जानकारी हमेशा पूरी तरह से अद्यतन हो रही है क्योंकिERDDAP™डेटा के लिए प्रत्येक अनुरोध का जवाब देने के लिए फ़ाइल सिस्टम को क्वेरी करता है। यहां तक कि अगर फ़ाइलों की एक बड़ी संख्या है, तो यह दृष्टिकोण उचित रूप से अच्छी तरह से काम करना चाहिए। यदि फ़ाइलों की एक बड़ी संख्या होती है तो एक प्रतिक्रिया धीमी हो सकती है और डेटासेट को थोड़ी देर के लिए क्वारी नहीं किया गया है। लेकिन उसके बाद कई मिनट के लिए, ऑपरेटिंग सिस्टम जानकारी को कैश में रखता है, इसलिए जवाब बहुत तेज़ होना चाहिए।  
  • आप उपयोग कर सकते हैंजनगणना Xml कार्यक्रमबनाने के लिएdatasets.xmlइस प्रकार के डेटासेट के लिए भाग लें। जैसा कि ऊपर दिखाया गया है, आप फ़ाइल नाम से निकाली गई जानकारी के साथ अतिरिक्त कॉलम जोड़ / परिभाषित कर सकते हैं।  

EDDTableFromFileNames कंकाल एक्सएमएल

  <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>

EDDTableFromFiles

EDDTableFromFiles सभी EDDTableFrom की सुपरक्लास है। आप सीधे EDDTableFromFiles का उपयोग नहीं कर सकते। इसके बजाय, विशिष्ट फ़ाइल प्रकार को संभालने के लिए EDDTableFromFiles के एक उपश्रेणी का उपयोग करें:

  • EDDTableFromAsciiFilesकॉमा-, टैब-, सेमीकोलॉन-, या स्पेस-सेपरेटेड सारणीबद्ध ASCII डेटा फ़ाइलों से डेटा एकत्र करता है।
  • EDDTableFromAudioFilesस्थानीय ऑडियो फ़ाइलों के एक समूह से डेटा एकत्र करता है।
  • EDDTableFrom AwsXmlFilesस्वचालित मौसम स्टेशन के एक सेट से डेटा एकत्र करता है (एडब्ल्यूएस) XML फ़ाइलें
  • EDDTableFromColumnarAsciiFilesस्थिर-चौड़ाई डेटा कॉलम के साथ सारणीबद्ध ASCII डेटा फ़ाइलों से डेटा एकत्र करता है।
  • EDDTableFromHyraxफ़ाइलें (डिप्रेषित) कई चर के साथ डेटा एकत्र करता है, प्रत्येक साझा आयाम के साथ (उदाहरण के लिए, समय, ऊंचाई (या गहराई) अक्षांश) , और एक द्वारा सेवा कीHyrax OPeNDAPसर्वर
  • EDDTableFromInvalidCRAFilesसे डेटा एकत्र करनाNetCDF (v3) .ncफ़ाइलें जो CF DSG Contiguous Ragged Array का एक विशिष्ट, अवैध, संस्करण का उपयोग करती हैं (सीआरए) फ़ाइलें हालांकिERDDAP™इस फ़ाइल प्रकार का समर्थन करता है, यह एक अमान्य फ़ाइल प्रकार है जिसे कोई भी उपयोग करना शुरू नहीं करना चाहिए। वर्तमान में इस फ़ाइल प्रकार का उपयोग करने वाले समूह को दृढ़ता से उपयोग करने के लिए प्रोत्साहित किया जाता हैERDDAP™मान्य CF DSG CRA फ़ाइलों को उत्पन्न करने और इन फ़ाइलों का उपयोग बंद करने के लिए।
  • EDDTableFromJsonlCSVFilesसे डेटा एकत्र करनाJSON लाइन्स CSV फ़ाइलों
  • EDDTableFromMultidimNcFilesसे डेटा एकत्र करनाNetCDF (v3) .nc (या.ncएमएल) कई चर के साथ फाइलें, प्रत्येक साझा आयाम के साथ (उदाहरण के लिए, समय, ऊंचाई (या गहराई) अक्षांश) ।
  • EDDTableFromNcFilesसे डेटा एकत्र करनाNetCDF (v3) .nc (या.ncएमएल) कई चर के साथ फाइलें, प्रत्येक साझा आयाम के साथ (उदाहरण के लिए, समय, ऊंचाई (या गहराई) अक्षांश) । मौजूदा डेटासेट के लिए इस डेटासेट प्रकार का उपयोग जारी रखना ठीक है, लेकिन नए डेटासेट के लिए हम इसके बजाय EDDTableFromMultidimNcFiles का उपयोग करने की सलाह देते हैं।
  • EDDTableFromNcCFFilesसे डेटा एकत्र करनाNetCDF (v3) .nc (या.ncएमएल) जो फ़ाइलों द्वारा निर्दिष्ट फ़ाइल प्रारूपों में से एक का उपयोग करते हैंCF Discrete Sampling Geometries (DSG) सम्मेलन। लेकिन फ़ाइलों के लिए बहुआयामी CF DSG वेरिएंट का उपयोग करते हुए, उपयोग करते हैंEDDTableFromMultidimNcFilesइसके बजाय।
  • EDDTableFromNccsvFilesसे डेटा एकत्र करनाएनसीसीएसवीASCII फ़ाइलें.
  • EDDTableFromParquetFilesडेटा को संभालनालकड़ी
  • EDDTableFromThreddsFiles (डिप्रेषित) फ़ाइलों से डेटा को एकत्रित करता है जिसमें साझा आयामों के साथ कई चर होते हैं, जो एक द्वारा सेवा की जाती है।थर्डOPeNDAPसर्वर
  • EDDTableFromWFSफ़ाइलें (डिप्रेषित) सभी डेटा की एक स्थानीय प्रति बनाता हैArcGISMapServerWFSइसलिए डेटा को फिर से संरक्षित किया जा सकता हैERDDAP™उपयोगकर्ता

वर्तमान में, कोई अन्य फ़ाइल प्रकार समर्थित नहीं है। लेकिन यह आमतौर पर अन्य फ़ाइल प्रकारों के लिए समर्थन जोड़ने के लिए अपेक्षाकृत आसान है। यदि आपके पास अनुरोध है तो हमसे संपर्क करें। यदि आपका डेटा पुराने फ़ाइल प्रारूप में है तो आप दूर जाना चाहते हैं, तो हम अनुशंसा करते हैं कि फ़ाइलों को परिवर्तित करने के लिए फ़ाइलों को परिवर्तित करें।NetCDFv3.ncफ़ाइलें (विशेष रूप से.ncफ़ाइलों के साथCF Discrete Sampling Geometries (DSG) Contiguous ragged Array डेटा संरचना -ERDDAP™उनमें से बहुत जल्दी डेटा निकाल सकते हैं) ।NetCDFएक व्यापक रूप से समर्थित, द्विआधारी प्रारूप है, डेटा तक तेजी से यादृच्छिक पहुंच की अनुमति देता है, और पहले से ही समर्थित हैERDDAP।

FromFiles Details

निम्नलिखित जानकारी EDDTableFromFiles के सभी उपवर्गों पर लागू होती है।

एकत्रीकरण

यह वर्ग स्थानीय फाइलों से डेटा एकत्र करता है। प्रत्येक फ़ाइल एक रखती है (अपेक्षाकृत) डेटा की छोटी तालिका।

  • परिणामस्वरूप डेटासेट दिखाई देता है जैसे कि फ़ाइल की तालिकाओं को जोड़ा गया था। (फ़ाइल # 1 से डेटा की सभी पंक्तियां, साथ ही फ़ाइल #2 से सभी पंक्तियां।) ।
  • सभी फ़ाइलों को निर्दिष्ट चर के सभी नहीं होना चाहिए। यदि किसी दिए गए फ़ाइल में निर्दिष्ट चर नहीं होता है, तो उसके पास निर्दिष्ट चर नहीं होता है।ERDDAP™आवश्यकतानुसार लापता मूल्यों को जोड़ देगा।
  • सभी फाइलों में चर MUST में समान मान होते हैं।add\_offset,missing\_value,\_Fill मूल्य,scale\_factor, औरयूनिटगुण (यदि कोई हो) ।ERDDAP™चेक, लेकिन यह एक अपूर्ण परीक्षण है - यदि अलग-अलग मान हैं, तो अलग-अलग मान होते हैं।ERDDAPयह नहीं पता कि कौन सही है और इसलिए कौन सी फाइलें अवैध हैं। यदि यह एक समस्या है, तो आप उपयोग करने में सक्षम हो सकते हैंएनसीएमएलयाNCOसमस्या को ठीक करने के लिए।  
संपीडित फ़ाइलें

सभी EDDTableFromFiles subclasses के लिए स्रोत डेटा फ़ाइलों को बाहरी रूप से संपीड़ित किया जा सकता है (उदाहरण के लिए.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2A.Z.) । देखेंबाह्य रूप से संपीड़ित फ़ाइल प्रलेखन।  

कैश्ड फाइल जानकारी
  • जब एक EDDTableFromFiles डेटासेट पहले लोड हो गया है, EDDTableFromFiles प्रासंगिक फ़ाइलों के सभी से जानकारी पढ़ता है और टेबल बनाता है (प्रत्येक फ़ाइल के लिए एक पंक्ति) प्रत्येक वैध फ़ाइल और प्रत्येक "बाद" के बारे में जानकारी के साथ (अलग या अमान्य) फ़ाइल
    • टेबल को डिस्क पर भी संग्रहीत किया जाता है, जैसा किNetCDFv3.ncफ़ाइलों में बड़ाParentDirectory /dataset/ Last2CharsOfDatasetID / datasetID / फ़ाइलों में नामित: dirTable.nc (जो अद्वितीय निर्देशिका नामों की सूची रखता है) , फ़ाइल टेबल.nc (जो प्रत्येक वैध फ़ाइल की जानकारी के साथ तालिका रखता है) , बुराफिल.nc (जो प्रत्येक बुरी फ़ाइल की जानकारी के साथ तालिका रखता है) ।
    • EDDTableFromFiles Dataset तक पहुंच को तेज करने के लिए (लेकिन अधिक स्मृति का उपयोग करने के खर्च पर) , आप उपयोग कर सकते हैं [<फ़ाइलTableInMemory>true</fileTableInMemory> (#फ़ाइलटेबलइंमेमोरी)
      बताने के लिएERDDAP™मेमोरी में फ़ाइल सूचना तालिका की एक प्रति रखने के लिए।
    • डिस्क पर फ़ाइल सूचना तालिका की प्रतिलिपि तब भी उपयोगी होती है जबERDDAP™बंद हो गया है और फिर से शुरू किया गया है: यह EDDTable बचाता है FromFiles से डेटा फ़ाइलों के सभी को फिर से पढ़ने के लिए।
    • जब डेटासेट को पुनः लोड किया जाता है,ERDDAP™केवल नए फाइलों और फ़ाइलों में डेटा पढ़ने की जरूरत है जो बदल गए हैं।
    • यदि किसी फ़ाइल में अन्य फ़ाइलों से एक अलग संरचना है (उदाहरण के लिए, चर में से एक के लिए एक अलग डेटा प्रकार, या "के लिए एक अलग मानयूनिटविशेषता) ,ERDDAPफ़ाइल को "bad" फ़ाइलों की सूची में जोड़ता है। फ़ाइल के साथ समस्या के बारे में जानकारी को लिखा जाएगा बड़ाParentDirectory /logs/log.txt फ़ाइल।
    • आपको कभी भी इन फ़ाइलों के साथ हटाने या काम करने की आवश्यकता नहीं है। एक अपवाद है: यदि आप अभी भी डेटासेट में बदलाव कर रहे हैंdatasets.xmlसेटअप, आप इन फ़ाइलों को बल देने के लिए चाहते हैंERDDAP™सभी फ़ाइलों को फिर से पढ़ने के लिए क्योंकि फ़ाइलों को अलग-अलग ढंग से पढ़ा / व्याख्या किया जाएगा। यदि आपको कभी इन फ़ाइलों को हटाने की आवश्यकता है, तो आप ऐसा कर सकते हैं जबERDDAP™चल रहा है। (फिर सेटझंडाडेटासेट ASAP को फिर से लोड करने के लिए।) हालांकि,ERDDAP™आमतौर पर नोटिस करता है किdatasets.xmlजानकारी फाइल से मेल नहीं खाती टेबल की जानकारी और स्वचालित रूप से फ़ाइल टेबल को हटा देता है।
    • यदि आप प्रोत्साहित करना चाहते हैंERDDAP™संग्रहीत डेटासेट जानकारी अद्यतन करने के लिए (उदाहरण के लिए, यदि आपने अभी जोड़ा है, तो कुछ फ़ाइलों को डेटासेट के डेटा डाइरेक्टरी में बदल दिया है या बदल दिया है।) , उपयोग करेंध्वज प्रणालीमजबूर होनाERDDAP™कैश्ड फ़ाइल जानकारी अपडेट करने के लिए।  
हैंडलिंग अनुरोध
  • ERDDAP™सारणीबद्ध डेटा अनुरोध किसी भी परिवर्तनीय पर बाधा डाल सकते हैं।
    • जब डेटा के लिए ग्राहक के अनुरोध को संसाधित किया जाता है, तो EDDTableFromFiles जल्दी से तालिका में देखने के लिए मान्य फ़ाइल जानकारी के साथ देख सकते हैं कि किस फाइल में प्रासंगिक डेटा हो सकता है। उदाहरण के लिए, यदि प्रत्येक स्रोत फ़ाइल में एक निश्चित स्थान buoy के लिए डेटा है, तो EDDTableFromFiles बहुत कुशलतापूर्वक निर्धारित कर सकते हैं कि कौन से फ़ाइलों को दिए गए अक्षांश रेंज और अक्षांश रेंज के भीतर डेटा हो सकता है।
    • क्योंकि वैध फ़ाइल सूचना तालिका में प्रत्येक वैध फ़ाइल के लिए प्रत्येक परिवर्तनीय का न्यूनतम और अधिकतम मान शामिल है, EDDTableFromFiles अक्सर अन्य प्रश्नों को काफी कुशलतापूर्वक संभाल सकते हैं। उदाहरण के लिए, यदि कुछ buoys में एयर प्रेशर सेंसर नहीं होता है, और एक ग्राहक एयरप्रेस के लिए डेटा का अनुरोध करता है!  
कैश्ड फाइल जानकारी को अद्यतन करना

जब भी डेटासेट को पुनः लोड किया जाता है, तो कैश्ड फ़ाइल जानकारी अपडेट की जाती है।

  • डेटासेट को समय-समय पर रीलोड किया जाता है जैसा कि द्वारा निर्धारित किया जाता है<ReloadEveryNMinutes> डेटासेट की जानकारी मेंdatasets.xml।
  • जब भी संभव हो डेटासेट को पुनः लोड किया जाता हैERDDAP™पता लगाता है कि आपने जोड़ा है, हटा दिया है,स्पर्श (फ़ाइल के अंतिम परिवर्तन के लिए संशोधित समय) , या एक डेटाफ़ाइल बदल दिया।
  • यदि आप उपयोग करते हैं तो डेटासेट को जल्द से जल्द लोड किया जाता हैध्वज प्रणाली

जब डेटासेट को पुनः लोड किया जाता है,ERDDAP™वर्तमान में उपलब्ध फ़ाइलों की तुलना कैश्ड फ़ाइल सूचना तालिका में की जाती है। नई फ़ाइलों को वैध फ़ाइलों की तालिका में पढ़ा और जोड़ा जाता है। उन फ़ाइलों को जो अब मौजूद नहीं हैं वे वैध फ़ाइलों की तालिका से हटा दिए गए हैं। जहां फ़ाइल टाइमस्टैम्प बदल गया है, वहां फ़ाइल को पढ़ा जाता है और उनकी जानकारी अपडेट की जाती है। नई तालिकाएं स्मृति में और डिस्क पर पुराने तालिकाओं को प्रतिस्थापित करती हैं।  

बुरा फ़ाइलें

खराब फ़ाइलों की तालिका और कारणों से फ़ाइलों को खराब घोषित किया गया था (भ्रष्ट फ़ाइल, लापता चर, गलत अक्ष मान आदि।) ईमेल करने के लिए ईमेल किया जाता है सब कुछ ईमेल पता (शायद आप) हर बार डेटासेट को पुनः लोड किया जाता है। आपको जितनी जल्दी हो सके इन फ़ाइलों को प्रतिस्थापित या मरम्मत करनी चाहिए।  

लापता चर

यदि कुछ फ़ाइलों में कुछ नहीं है तो कुछ फ़ाइलों में से कुछ नहीं है।dataVariableडेटासेट में परिभाषितdatasets.xmlवह ठीक है। जब EDDTableFromFiles उन फ़ाइलों में से एक पढ़ता है, तो यह कार्य करेगा जैसे कि फ़ाइल में चर था, लेकिन सभी लापता मूल्यों के साथ।  

रियल टाइम डेटा के पास
  • EDDTableFromFiles एक विशेष मामले के रूप में हाल के डेटा के लिए अनुरोध का इलाज करता है। समस्या: यदि डेटासेट बनाने वाली फ़ाइलों को अक्सर अद्यतन किया जाता है, तो यह संभावना है कि डेटासेट को हर बार एक फ़ाइल बदलने पर अपडेट नहीं किया जाएगा। इसलिए EDDTableFromFiles परिवर्तित फ़ाइलों के बारे में पता नहीं होगा। (आप उपयोग कर सकते हैंध्वज प्रणालीलेकिन इससे हो सकता हैERDDAP™डेटासेट को लगातार लोड करना। इसलिए ज्यादातर मामलों में, हम इसकी अनुशंसा नहीं करते हैं।) इसके बजाय, EDDTableFromFiles निम्नलिखित प्रणाली से संबंधित है: कबERDDAP™पिछले 20 घंटों में डेटा के लिए एक अनुरोध मिलता है (उदाहरण के लिए, 8 घंटे पहले) ,ERDDAP™पिछले 20 घंटों में किसी भी डेटा में मौजूद सभी फ़ाइलों की खोज करेगा। इस प्रकार,ERDDAP™नवीनतम डेटा खोजने के लिए सभी फ़ाइलों के लिए पूरी तरह से अद्यतन डेटा की आवश्यकता नहीं है। अभी भी सेट होना चाहिए<रीलोड हरNMinutes (#reloadeverynminutes) एक उचित मूल्य पर (उदाहरण के लिए, 60) लेकिन यह छोटा नहीं होना चाहिए (उदाहरण के लिए, 3) ।  
    • अनुशंसित नहीं फ़ाइलों में निकट-वास्तविक समय डेटा का संगठन: यदि, उदाहरण के लिए, आपके पास एक डेटासेट है जो कई स्टेशनों के लिए डेटा स्टोर करता है (या buoy, या trajectory, ...) कई वर्षों तक, आप फ़ाइलों को व्यवस्थित कर सकते हैं ताकि उदाहरण के लिए, प्रति स्टेशन एक फ़ाइल है। लेकिन फिर, स्टेशन के लिए हर बार नया डेटा आता है, आपको एक बड़ी पुरानी फ़ाइल पढ़ना होगा और एक बड़ी नई फ़ाइल लिखना होगा। कब और कबERDDAP™डेटासेट को फिर से लोड करता है, यह ध्यान देता है कि कुछ फ़ाइलों को संशोधित किया गया है, इसलिए यह उन फ़ाइलों को पूरी तरह से पढ़ता है। यह अक्षम है।  

    • अनुशंसित फ़ाइलों में निकट-वास्तविक समय डेटा का संगठन: उदाहरण के लिए, एक साल के लिए एक स्टेशन / बॉय / ट्रेजेक्टरी के लिए सभी डेटा (या एक महीना) । फिर, जब एक नया डेटम आता है, तो केवल इस साल की फ़ाइल के साथ (या महीना) डेटा प्रभावित होता है।

    • सर्वश्रेष्ठ: उपयोगNetCDFv3.ncअसीमित आयाम वाली फाइलें (समय) । फिर, नए डेटा को जोड़ने के लिए, आप पूरी फ़ाइल को पढ़ने और लिखने के बिना नए डेटा को सिर्फ ऐपेंड कर सकते हैं। परिवर्तन बहुत कुशलतापूर्वक और अनिवार्य रूप से परमाणु रूप से किया जाता है, इसलिए फ़ाइल कभी भी असंगत अवस्था में नहीं होती है।

    • अन्यथा: यदि आप उपयोग नहीं करते हैं / नहीं कर सकते हैं.ncअसीमित आयाम वाली फाइलें (समय) , फिर, जब आपको नया डेटा जोड़ने की आवश्यकता होती है, तो आपको पूरी प्रभावित फ़ाइल को पढ़ने और लिखने की आवश्यकता होती है (उम्मीद है कि यह सिर्फ एक साल है (या महीना) डेटा का मूल्य) । Fortunately, पिछले वर्षों के लिए फ़ाइलों के सभी (या महीना) उस स्टेशन के लिए अपरिवर्तित रहता है।

दोनों मामलों में, जबERDDAP™डेटासेट को फिर से लोड करता है, अधिकांश फाइलें अपरिवर्तित हैं; केवल कुछ ही, छोटी फाइलें बदल गई हैं और पढ़ने की आवश्यकता है।  

निदेशक

फ़ाइलों को एक निर्देशिका में या किसी निर्देशिका और उसके उपनिर्देशों में किया जा सकता है (लगातार) । यदि फ़ाइलों की एक बड़ी संख्या है (उदाहरण के लिए, > 1,000) ऑपरेटिंग सिस्टम (इस प्रकार EDDTableFromFiles) यदि आप फ़ाइलों को उपनिर्देशों की एक श्रृंखला में स्टोर करते हैं तो अधिक कुशलतापूर्वक काम करेंगे (प्रति वर्ष, या बहुत लगातार फ़ाइलों के साथ डेटासेट के लिए प्रति माह एक) इसलिए, किसी दिए गए निर्देशिका में फ़ाइलों की एक बड़ी संख्या कभी नहीं होती है।  

रिमोट डायरेक्टरीज़ और रेंज अनुरोध
  • रिमोट डायरेक्टरीज़ और रेंज अनुरोध (AKA बाइट सर्विंग, बाइट रेंज अनुरोध) -- EDDGridसे NcFiles, EDDTableFromMultidimNcFiles, EDDTableFromNcFiles, और EDDTableFromNcCFFiles, कभी कभी कभी से डेटा की सेवा कर सकते हैं डेटा से.ncदूरस्थ सर्वर पर फाइलें और HTTP के माध्यम से एक्सेस अगर सर्वर समर्थन करता हैByteHTTP रेंज अनुरोध के माध्यम से (सेवा करने के लिए HTTP तंत्र) । यह संभव है क्योंकि netcdf-java (जोERDDAP™पढ़ने के लिए उपयोग.ncफ़ाइलें) दूरस्थ से डेटा पढ़ने का समर्थन करता है.ncHTTP रेंज अनुरोधों के माध्यम से फ़ाइलें।

    ऐसा मत करो!
    इसके बजाय, [] का उपयोग करें<कैशFromUrl> प्रणाली (#cachefromurl) ।

CashFromUrl
  • [ ** <कैशFromUrl> ** ] (#cachefromurl) - सबEDDGridFromFiles and all EDDTableFromFiles डाटासेट एक सेट का समर्थन करते हैं जो बताते हैंERDDAP™सभी दूरस्थ डेटासेट फ़ाइलों की एक प्रति डाउनलोड करने और बनाए रखने के लिए, या कुछ फ़ाइलों का कैश (आवश्यकतानुसार डाउनलोड करें) । यह एक अविश्वसनीय रूप से उपयोगी विशेषता है।
    • The The most of the<कैशFromUrl> टैग आपको दूरस्थ फ़ाइल सूची से दूरस्थ डेटासेट की फ़ाइलों की सूची के साथ एक URL निर्दिष्ट करने देता है।

      ERDDAP™इन फ़ाइलों को डेटासेट में कॉपी या कैश करेगा<फ़ाइलDir> निर्देशिका. यदि आपको किसी अन्य प्रकार की दूरस्थ फ़ाइल सूची के लिए समर्थन की आवश्यकता है (उदाहरण के लिए, FTP) , कृपया अपने अनुरोध को क्रिस पर ईमेल करें। जॉन at noaa.gov.

      • के लिए डिफ़ॉल्ट मान<कैशFromUrl> टैग null है। यदि आप मूल्य निर्दिष्ट नहीं करते हैं<कैशFromUrl> टैग, इस डेटासेट के लिए प्रतिलिपि / कैश सिस्टम का उपयोग नहीं किया जाएगा।
      • यदि डेटासेट है<फ़ाइल सेटिंग अन्य है।ERDDAP™केवल उन फ़ाइलों को डाउनलोड करेगा जो फ़ाइल रेजेक्स से मेल खाते हैं।
      • यदि डेटासेट है<Recursive> सेटिंग सच है और दूरस्थ फाइलें उपनिर्देशों में हैं,ERDDAP™दूरस्थ उपनिर्देशों में दिखाई देगा जो डेटासेट के मिलान से मेल खाते हैं [<पथRegex> (#pathregex) स्थानीय रूप से इसी निर्देशिका संरचना का निर्माण, और स्थानीय फ़ाइलों को उसी उपनिर्देशों में डाल दिया।
      • जनरेटडाटासेट में यदि आप एक निर्दिष्ट करते हैं, तो Xml<कैशFromUrl> मान, जनरेट डेटासेट XML स्थानीय बना देगा<फ़ाइलDir> निर्देशिका और इसमें 1 दूरस्थ फ़ाइल कॉपी करें। जनगणना तब XML उत्पन्न करेगाdatasets.xmlउस नमूना फ़ाइल पर आधारित हिस्सा (नमूना निर्दिष्ट करें फ़ाइल) ।
      • यदि डेटा स्रोत रिमोट हैERDDAP™उपयोगEDDGridसेंधयाEDDTableFromErddapइसके बजाय<CashFromUrl>। इस तरह, आपका स्थानीयERDDAP™डेटासेट दिखाई देगा लेकिन स्थानीय रूप से किसी भी डेटा को स्टोर करने की आवश्यकता नहीं होगी। उपयोग करने का एकमात्र कारण<कैशFromUrl> दूर से डेटा प्राप्त करने के लिएERDDAP™जब आपके पास कुछ अन्य कारण हैं कि आप डेटा फ़ाइलों की स्थानीय प्रति क्यों चाहते हैं। उस मामले में:
        • यह डेटासेट रिमोट पर डेटासेट की सदस्यता लेने की कोशिश करेगाERDDAPताकि उस डेटासेट में परिवर्तन इस डेटासेट के ध्वज को बुला सके Url, इस स्थानीय डेटासेट को परिवर्तित दूरस्थ फ़ाइलों को पुनः लोड करने और डाउनलोड करने के लिए बनाता है। इस प्रकार, रिमोट डेटासेट में बदलाव के बाद स्थानीय डेटासेट बहुत जल्द अद्यतन हो जाएगा।
        • आपको दूरस्थ के व्यवस्थापक को ईमेल करना चाहिएERDDAP™पूछने के लिएdatasets.xmlदूरस्थ डेटासेट के लिए ताकि आप अपने स्थानीय में डेटासेट बना सकेंERDDAP™दूरस्थ में डेटासेट की तरह दिखते हैंERDDAP।
      • यदि डेटा स्रोत रिमोट हैERDDAP™स्थानीय डेटासेट दूरस्थ डेटासेट की सदस्यता लेने की कोशिश करेगा।
        • यदि सदस्यता सफल होती है, तो जब भी रिमोटERDDAPफिर से लोड हो रहा है और नया डेटा है, यह इस डेटासेट के लिए flagURL से संपर्क करेगा, जिससे यह नए और / या डेटा फ़ाइलों को परिवर्तित करने और डाउनलोड करने के लिए सक्षम होगा।
        • यदि सदस्यता विफल हो जाती है (किसी भी कारण के लिए) यदि आप यह सुनिश्चित करना चाहते हैं कि स्थानीय डेटासेट अप-टू-डेट है, तो आप एक सेट कर सकते हैंझंडास्थानीय डेटासेट के लिए, इसलिए यह फिर से लोड हो जाएगा, इसलिए यह नए और / या दूरस्थ डेटा फ़ाइलों को बदल देगा।
      • यदि डेटा स्रोत रिमोट नहीं हैERDDAP: डेटासेट नई के लिए जांच करेगा और / या जब भी यह फिर से लोड हो जाता है तो दूरस्थ फ़ाइलों को बदल देगा। आम तौर पर, यह द्वारा नियंत्रित किया जाता है [<रीलोड हरNMinutes (#reloadeverynminutes) । लेकिन अगर आप जानते हैं कि नई दूरस्थ फाइलें कब हैं, तो आप एक सेट कर सकते हैंझंडास्थानीय डेटासेट के लिए, इसलिए यह फिर से लोड हो जाएगा और नए और / या दूरस्थ डेटा फ़ाइलों को बदल देगा। यदि यह नियमित रूप से दिन के एक निश्चित समय पर होता है (उदाहरण के लिए, 7am पर) , आप उपयोग करने के लिए क्रॉन जॉब बना सकते हैंcurlध्वज से संपर्क करें इस डेटासेट के लिए Url, इसलिए यह नए और / या दूरस्थ डेटा फ़ाइलों को परिवर्तित करने के लिए पुनः लोड और जांच करेगा।
    • The The most of the<कैशSizeGB> टैग स्थानीय कैश के आकार को निर्दिष्ट करता है। क्लाउड स्टोरेज सिस्टम जैसे काम करते समय आपको शायद इसका उपयोग करने की आवश्यकता हैअमेज़न S3जो आमतौर पर इस्तेमाल किया जाने वाला भंडारण प्रणाली है जो का हिस्सा हैअमेज़न वेब सर्विसेज (एडब्ल्यूएस) । डिफ़ॉल्ट -1 है।

      • यदि मूल्य है<=0 (उदाहरण के लिए, -1 का डिफ़ॉल्ट मान) , ERDDAP™डाउनलोड करें और बनाए रखें प्रतिलिपि डेटासेट की सभी दूरस्थ डेटासेट की फ़ाइलों की<फ़ाइल
        • यह सेटिंग है जो जब भी संभव हो की सिफारिश की है।
        • हर बार डेटासेट को फिर से लोड किया जाता है, यह दूरस्थ फ़ाइलों और स्थानीय फ़ाइलों के नाम, आकार और अंतिम संशोधित समय की तुलना करता है, और किसी भी दूरस्थ फ़ाइलों को डाउनलोड करता है जो नई हैं या बदल गया है।
        • यदि दूरस्थ सर्वर पर एक फ़ाइल गायब हो जाती है, तो,ERDDAP™संबंधित स्थानीय फ़ाइल को नष्ट नहीं करेगा (अन्यथा, अगर कुछ दूरस्थ सर्वर के साथ अस्थायी रूप से गलत था,ERDDAP™कुछ या सभी स्थानीय फ़ाइलों को नष्ट कर सकते हैं!) ।
        • इस सेटिंग के साथ, आमतौर पर आप सेट करेंगे<अद्यतनEveryNMillis> -1 करने के लिए, क्योंकि डेटासेट के बारे में पता है जब यह जगह में नए डेटा फ़ाइलों की नकल की है।
      • यदि मान 0 है, ERDDAP™दूरस्थ डेटासेट से फ़ाइलों को स्थानीय में आवश्यकतानुसार डाउनलोड करेगा कैश (dataset)<फ़ाइलDir>) GB की उस निर्दिष्ट संख्या के एक थ्रेसहोल्ड आकार के साथ।
        • कम से कम कई डेटा फ़ाइलों को पकड़ने के लिए कैश काफी बड़ा होना चाहिए।
        • सामान्य तौर पर, कैश जितना बड़ा होता है, उतना बेहतर होता है क्योंकि अगले अनुरोधित डेटा फ़ाइल पहले से ही कैश में होने की संभावना अधिक होती है।
        • जब केवल कैशिंग का उपयोग किया जाना चाहिएERDDAP™क्लाउड कंप्यूटिंग सर्वर में चल रहा है (उदाहरण के लिए, एडब्ल्यूएस कम्प्यूट उदाहरण) क्लाउड स्टोरेज सिस्टम में दूरस्थ फाइलें (उदाहरण के लिए, AWS S3) ।
        • जब स्थानीय फ़ाइलों द्वारा उपयोग की जाने वाली डिस्क स्थान कैश से अधिक हो जाती है आकार जीबीERDDAP™जल्द ही (शायद) कुछ कैश्ड फ़ाइलों को हटा दें (वर्तमान में, पूर्वोत्तर हाल ही में प्रयुक्त (LRU) एल्गोरिदम) जब तक कि स्थानीय फ़ाइलों द्वारा उपयोग की जाने वाली डिस्क स्पेस तब तक होती है जब तक कि स्थानीय फ़ाइलों द्वारा उपयोग की जाने वाली डिस्क स्पेस का उपयोग किया जाता है।<CacheSizeGB ("goal") । हां, ऐसे मामले हैं जहां LRU बहुत बुरी तरह से प्रदर्शन करता है - कोई सही एल्गोरिथ्म नहीं है।
        • ERDDAP™कभी एक कैश्ड फाइल को हटाने की कोशिश नहीं करेगा जो कि कैश्ड फाइल को नष्ट करने की कोशिश करेगा।ERDDAP™पिछले 10 सेकंड में उपयोग करना शुरू कर दिया। यह कैश सिस्टम से निपटने के लिए एक अपूर्ण प्रणाली है और डेटा फ़ाइल रीडर सिस्टम को केवल ढीले ढंग से एकीकृत किया जा रहा है। इस नियम के कारण,ERDDAP™इसके लक्ष्य तक पहुंचने के लिए पर्याप्त फ़ाइलों को हटाने में सक्षम नहीं हो सकता है, जिसके मामले में यह लॉग.txt फ़ाइल पर WARNING प्रिंट करेगा, और सिस्टम कैश को ठीक करने की कोशिश में बहुत समय बर्बाद कर देगा, और यह संभव है कि कैश में फ़ाइलों का आकार कैशSizeGB से अधिक हो सकता है। यदि यह कभी होता है, तो उस डेटासेट के लिए एक बड़ा कैशSizeGB सेटिंग का उपयोग करें।
        • वर्तमान में,ERDDAP™कभी नहीं जांचता कि रिमोट सर्वर में एक फ़ाइल का नया संस्करण है जो स्थानीय कैश में है। यदि आपको इस सुविधा की आवश्यकता है, तो कृपया क्रिस को ईमेल करें। जॉन at noaa.gov.
      • हालांकि उसी टैग के नामों का उपयोग ऐसा हो सकता है कि कॉपी सिस्टम और कैश सिस्टम उसी अंतर्निहित सिस्टम का उपयोग करता है, जो सही नहीं है।
        • सक्रिय रूप से कार्य शुरू होता हैथ्रेड कार्य हर बार नई फ़ाइलों को डाउनलोड करने और परिवर्तित करने के लिए डेटासेट को पुनः लोड किया जाता है। केवल उन फ़ाइलों को जिन्हें वास्तव में स्थानीय निर्देशिका में कॉपी किया गया है, के माध्यम से उपलब्ध हैंERDDAP™डेटासेट।
        • कैश सिस्टम को हर बार दूरस्थ फ़ाइल सूची मिलती है जब डेटासेट को फिर से लोड किया जाता है और यह दर्शाता है कि उन सभी फाइलों को उपलब्ध कराया जाता है।ERDDAP™डेटासेट। दिलचस्प बात यह है कि सभी दूरस्थ फाइलें डेटासेट के / फ़ाइल / वेब पेज में भी दिखाई देती हैं और डाउनलोड करने के लिए उपलब्ध हैं (हालांकि शायद देरी के बाद, फ़ाइल को पहले दूरस्थ सर्वर से स्थानीय कैश में डाउनलोड किया जाता है।)
      • डेटासेट जो कैश का उपयोग करते हैंSizeGB एक उपयोग से लाभ उठा सकता हैnThread1 से अधिक की सेटिंग, क्योंकि यह डेटासेट को एक समय में 1 से अधिक दूरस्थ फ़ाइल डाउनलोड करने में सक्षम होगा।
    • The The most of the<कैशपार्टियलPathRegex> टैग एक शायद ही कभी इस्तेमाल किया जाने वाला टैग है जो डेटासेट के लिए एक विकल्प निर्दिष्ट कर सकता है [<पथRegex> (#pathregex) । डिफ़ॉल्ट शून्य है।

      • यदि आप डिफ़ॉल्ट के माध्यम से पूरे डेटासेट की प्रतिलिपि बना रहे हैं तो केवल इसका उपयोग करें<1 का कैशSizeGB> मान।<कैशSizeGB> 1 के मान, इसे अनदेखा किया जाएगा क्योंकि यह गैर-संवेदनशील है।
      • देखें [email protected]<पथRegex> (#pathregex) रेगेक्स का निर्माण कैसे करें, इसके मार्गदर्शन के लिए।
      • यदि यह निर्दिष्ट है, तो यह हर बार डेटासेट को पुनः लोड किया जाता है, पहली बार एक महीने की शुरुआत में डेटासेट को पुनः लोड किया जाता है।
      • यह तब उपयोगी होता है जब दूरस्थ डेटासेट को सबडायरेक्टरी के भूलभुलैया में संग्रहीत किया जाता है और जब उन फ़ाइलों का विशाल बहुमत शायद ही कभी, अगर कभी, बदल जाता है। (a)<खांसी> नासा<खांसी> उदाहरण के लिए, आप एक निर्दिष्ट कर सकते हैं<कैशपार्टियलPathRegex> जो वर्तमान वर्ष या वर्तमान महीने से मेल खाता है। ये regexes निर्दिष्ट करने के लिए बहुत मुश्किल हैं, क्योंकि सभी आंशिक और पूर्ण पथ नामों को मिलान करना चाहिए<कैशपार्टियलPathRegex> और क्योंकि<कैशपार्टियलPathRegex> दूरस्थ यूआरएल और स्थानीय निर्देशिकाओं के साथ काम करना चाहिए। वास्तविक जीवन उदाहरण है:
            <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>

ऊपर नमूना यूआरएल में साल के आधार पर उपनिर्देशिकाओं में फाइलें हैं (उदाहरण के लिए, 2018) वर्ष का दिन (उदाहरण के लिए, 001,002, ..., 365 या 366) । ध्यान दें कि<कैशपार्टियलPathRegex> साथ शुरू होता है। फिर एक विशिष्ट उपनिर्देशिका है जो दूरस्थ यूआरएल और स्थानीय निर्देशिकाओं के लिए आम है, उदाहरण के लिए, /v4\.1/ उसके पास घोंसले पर कब्जा समूहों की एक श्रृंखला है जहां पहला विकल्प कुछ नहीं है और दूसरा विकल्प एक विशिष्ट मान है।

ऊपर का उदाहरण केवल 2018 के दूसरे 10 दिनों के लिए मैच डायरेक्टरी होगा, उदाहरण के लिए, https://data.nodc.noaa.gov/ghrsst/GDS2/L4/GLOB/JPL/MUR/v4.1/2018/010/ \[2020-10-21 यह सर्वर अब विश्वसनीय नहीं है।\]
और दिन 011, 012, ..., 019। (इसे देखेंरेगेक्स प्रलेखनऔरRegex ट्यूटोरियल।)
यदि आपको मदद की आवश्यकता है<CashPartialPathRegex<CashFromUrl> to Chris. जॉन at noaa.gov.

  • एक सामान्य दृष्टिकोण: यदि आप उपयोग करना चाहते हैं<CashPartialPathRegexERDDAP™शुरू में सभी फ़ाइलों को डाउनलोड करने के लिए। बाद मेंERDDAP™सभी फ़ाइलों को डाउनलोड किया है, इसे डेटासेट के हिस्से में जोड़ेंdatasets.xml।  
हजारों फाइलें

यदि आपके डेटासेट में हजारों फाइलें हैं, तो आपके डेटासेट में हजारों फाइलें हैं।ERDDAP™उस डेटासेट से डेटा के लिए अनुरोधों का जवाब देने के लिए धीमा हो सकता है। यहाँ दो मुद्दे हैं:  

  1. प्रति निर्देशिका फ़ाइलों की संख्या। आंतरिक रूप सेERDDAP™इस बात की परवाह किए बिना कि एन फाइलें एक निर्देशिका में हैं या कई निर्देशिकाओं में बिखरे हुए हैं।   लेकिन एक समस्या है: किसी दिए गए निर्देशिका में अधिक फाइलें, ऑपरेटिंग सिस्टम धीमी गति से निर्देशिका में फ़ाइलों की सूची वापस करने पर है (प्रति फ़ाइल) toERDDAP। प्रतिक्रिया समय ओ हो सकता है (n) । यह कहना मुश्किल है कि एक निर्देशिका में कितने फाइलें बहुत ज्यादा हैं, लेकिन 10,000 शायद बहुत ज्यादा है। इसलिए यदि आपका सेटअप बहुत सारी फाइलों को उत्पन्न कर रहा है, तो यहां एक सिफारिश हो सकती है: फ़ाइलों को तार्किक रूप से व्यवस्थित उपनिर्देशों में डाल दें (उदाहरण के लिए, स्टेशन या स्टेशन / वर्ष) ।

उपनिर्देशों का उपयोग करने का एक और कारण: यदि कोई उपयोगकर्ता उपयोग करना चाहता हैERDDAP'"files"सिस्टम स्टेशन एक्स के लिए सबसे पुरानी फ़ाइल का नाम खोजने के लिए, यह तेजी से और अधिक कुशल है यदि फाइलें स्टेशन / वर्ष के उपनिर्देशों में हैं, क्योंकि बहुत कम जानकारी को स्थानांतरित करने की आवश्यकता है।

  1. फ़ाइलों की कुल संख्या। सारणीबद्ध डेटासेट के लिए,ERDDAP™प्रत्येक फ़ाइल में प्रत्येक चर के लिए मानों की श्रेणी का ट्रैक रखता है। जब कोई उपयोगकर्ता अनुरोध करता है,ERDDAP™सभी फाइलों से सभी डेटा को पढ़ना पड़ता है, जिसमें उपयोगकर्ता के अनुरोध से डेटा मिलान हो सकता है। यदि उपयोगकर्ता सीमित समय से डेटा के लिए पूछता है (उदाहरण के लिए, एक दिन या एक महीने) फिरERDDAP™अपने डेटासेट में बहुत सारी फाइलें खोलने की जरूरत नहीं है। लेकिन वहाँ चरम मामलों जहां लगभग हर फ़ाइल मिलान डेटा हो सकता है (उदाहरण के लिए, जब पानी का तापमान = 13.2C) । चूंकि यह लेता हैERDDAP™थोड़ी देर (आंशिक रूप से एचडीडी पर तलाश का समय, आंशिक रूप से फ़ाइल के हेडर को पढ़ने का समय) बस एक दिए गए फ़ाइल खोलने के लिए (यदि निर्देशिका में बहुत सारी फाइलें हैं) यदि फ़ाइलों की कुल संख्या है, तो एक महत्वपूर्ण समय दंड हैERDDAP™खोलना बहुत बड़ा है। यहां तक कि 1000 फाइलें खोलने में भी महत्वपूर्ण समय लगता है। इसलिए दैनिक फ़ाइलों को बड़े टुकड़ों में समय-समय पर समेकित करने के लिए लाभ हैं (उदाहरण के लिए, 1 साल के लिए स्टेशन) । मैं समझता हूं कि आप इसे विभिन्न कारणों से नहीं करना चाहते हैं, लेकिन यह बहुत तेजी से जवाब देता है। अत्यधिक मामलों में (उदाहरण के लिए, मैं एक GTSPP डेटासेट से निपटता हूं जिसमें ~ 35 मिलियन स्रोत फाइलें हैं।) , स्रोत फ़ाइलों की एक बड़ी संख्या से डेटा की सेवा करना अव्यवहारिक है क्योंकिERDDAPसरल प्रश्नों के जवाब में घंटे लग सकते हैं और टन मेमोरी का उपयोग कर सकते हैं। स्रोत फ़ाइलों को एक छोटी संख्या में समेकित करके (जीएसटीपीपी के लिए, मेरे पास अब 720, 2 प्रति माह है) ,ERDDAP™जल्दी से जवाब दे सकते हैं। देखेंलाखों फ़ाइल
     

एन.बी. सॉलिड स्टेट ड्राइव महान हैं! मदद करने के लिए सबसे तेज़, सबसे सस्ता तरीकाERDDAP™बड़ी संख्या में सौदा (छोटा) फ़ाइलों को एक ठोस राज्य ड्राइव का उपयोग करना है। देखेंसॉलिड स्टेट ड्राइव महान हैं!
 

लाखों फ़ाइल
  • कुछ डेटासेट में लाखों स्रोत फाइल हैं।ERDDAP™इसे संभाल सकते हैं, लेकिन मिश्रित परिणामों के साथ।

    • अनुरोधों के लिए जिसमें केवल उन चरों को शामिल किया गया है जिन्हें सूचीबद्ध किया गया है [<subsetVariables> (#subsetvariables) ,ERDDAP™सभी आवश्यक जानकारी पहले से ही डेटाफ़ाइल से निकाली गई है और एक फ़ाइल में संग्रहीत की गई है, इसलिए यह बहुत जल्दी जवाब दे सकता है।
    • अन्य अनुरोधों के लिएERDDAP™डेटासेट को स्कैन कर सकते हैंकैश्ड फाइल जानकारीऔर यह जानने के लिए कि केवल कुछ फाइलों में डेटा हो सकता है जो अनुरोध के लिए प्रासंगिक है और इस तरह जल्दी प्रतिक्रिया करता है।
    • लेकिन अन्य अनुरोधों के लिए (उदाहरण के लिए, waterTemperature=18 डिग्री सेल्सियस) जहां किसी भी फ़ाइल में प्रासंगिक डेटा हो सकता है,ERDDAP™यह देखने के लिए फ़ाइलों की एक बड़ी संख्या को खोलना होगा कि प्रत्येक फ़ाइल में कोई डेटा है जो अनुरोध के लिए प्रासंगिक है। फाइलों को क्रमिक रूप से खोला जाता है। किसी भी ऑपरेटिंग सिस्टम और किसी भी फ़ाइल सिस्टम पर (ठोस राज्य ड्राइव के अलावा अन्य) , यह लंबे समय तक लेता है (इसलिएERDDAP™धीरे जवाब) और वास्तव में फाइल सिस्टम को टाई करता है (इसलिएERDDAP™अन्य अनुरोधों को धीरे-धीरे जवाब देता है) ।

वास्तव में, वहाँ एक समाधान है।

  1. एक गैर-सार्वजनिक पर डेटासेट सेट करेंERDDAP™ (आपका व्यक्तिगत कंप्यूटर?) ।
  2. एक स्क्रिप्ट बनाने और चलाने के लिए जो एक श्रृंखला का अनुरोध करता है.ncCF फाइलें, प्रत्येक डेटासेट के बड़े हिस्से के साथ, आमतौर पर एक समय अवधि (उदाहरण के लिए, किसी दिए गए महीने के लिए सभी डेटा) । समय अवधि का चयन करें ताकि परिणामस्वरूप फ़ाइलों के सभी 2GB से कम हो (लेकिन उम्मीद है कि 1GB से अधिक) । यदि डेटासेट में निकट-वास्तविक समय डेटा है, तो वर्तमान समय अवधि के लिए फ़ाइल को फिर से उत्पन्न करने के लिए स्क्रिप्ट चलाएं (उदाहरण के लिए, इस माह) अक्सर (हर 10 मिनट? हर घंटे?) । अनुरोधERDDAP™के लिए.ncसीएफ फाइलें एक बनाते हैंNetCDFv3.ncफ़ाइल जो उपयोग करती हैCF Discrete Sampling Geometries (DSG) Contiguous Ragged Array डेटा संरचनाओं).
  3. सेट अपEDDTableFromNcCFFilesअपने सार्वजनिक डेटासेटERDDAP™जो डेटा से मिलता है.nc (CF) फ़ाइलेंERDDAP™इन फ़ाइलों को जल्दी से निकाल सकते हैं। चूंकि अब दर्जनों या सैकड़ों हैं (इसके बजाय लाखों) फ़ाइलों की, भले हीERDDAP™सभी फाइलों को खोलना है, यह जल्द ही कर सकता है।

हां, यह प्रणाली कुछ समय और प्रयास करती है। अधिकांश डेटा अनुरोधों को पहले की तुलना में 100 गुना तेजी से संभाला जा सकता है। \[बॉब को पता था कि यह एक संभावना थी, लेकिन यह केविन ओ'ब्रायन था जिन्होंने पहले ऐसा किया और दिखाया कि यह अच्छी तरह से काम करता है। अब, बॉब जीएसटीपीपी डेटासेट के लिए इसका उपयोग करता है, जिसमें लगभग 18 मिलियन स्रोत फाइलें होती हैं और जोERDDAP™अब 500 के बारे में कार्य करता है.nc (CF) फ़ाइलें\]

एन.बी. सॉलिड स्टेट ड्राइव महान हैं! मदद करने के लिए सबसे तेज़, सबसे सस्ता तरीकाERDDAP™बड़ी संख्या में सौदा (छोटा) फ़ाइलों को एक ठोस राज्य ड्राइव का उपयोग करना है। देखेंसॉलिड स्टेट ड्राइव महान हैं!
 

विशाल फ़ाइल
  • एकल विशाल डेटा फ़ाइल (विशेष रूप से विशाल ASCII डेटा फ़ाइलों) एक OutOfMemoryError पैदा कर सकता है। यदि यह समस्या है तो यह स्पष्ट होना चाहिए क्योंकिERDDAP™डेटासेट लोड करने में विफल हो जाएगा। यदि संभव हो तो समाधान फ़ाइल को एकाधिक फ़ाइलों में विभाजित करना है। आदर्श रूप से, आप फ़ाइल को तार्किक टुकड़ों में विभाजित कर सकते हैं। उदाहरण के लिए, यदि फ़ाइल में 20 महीने का डेटा है, तो इसे 20 फ़ाइलों में विभाजित करें, प्रत्येक में 1 महीने के डेटा के लायक है। लेकिन अगर मुख्य फ़ाइल मनमाने ढंग से विभाजित हो जाती है तो भी फायदे हैं। इस दृष्टिकोण के कई फायदे हैं: a) यह 1/20 तक डेटा फ़ाइलों को पढ़ने के लिए आवश्यक मेमोरी को कम करेगा, क्योंकि केवल एक फ़ाइल एक समय में पढ़ा जाता है। b) अक्सर,ERDDAP™अनुरोधों के साथ बहुत तेजी से सौदा कर सकते हैं क्योंकि इसे केवल एक या कुछ फ़ाइलों को देखने के लिए दिए गए अनुरोध के लिए डेटा ढूंढना पड़ता है। c) यदि डेटा संग्रह चल रहा है, तो मौजूदा 20 फाइलें अपरिवर्तित रह सकती हैं, और आपको डेटासेट में डेटा के अगले महीने के लायक डेटा जोड़ने के लिए केवल एक, छोटी, नई फ़ाइल को संशोधित करने की आवश्यकता है।  
FTP Trouble/Advice
  • यदि आप FTP नई डेटा फ़ाइलों को करने के लिएERDDAP™सर्वर जबकिERDDAP™चल रहा है, यह मौका है किERDDAP™FTP प्रक्रिया के दौरान डेटासेट को फिर से लोड किया जाएगा। अक्सर ऐसा होता है जितना आप सोच सकते हैं! यदि ऐसा होता है तो फ़ाइल मान्य होगी। (यह एक वैध नाम है) लेकिन फ़ाइल मान्य नहीं है। अगरERDDAP™उस अमान्य फ़ाइल से डेटा पढ़ने की कोशिश करता है, जिसके परिणामस्वरूप त्रुटि फ़ाइल को अमान्य फ़ाइलों की तालिका में जोड़ा जाएगा। यह अच्छा नहीं है। इस समस्या से बचने के लिए, एक अस्थायी फ़ाइल नाम का उपयोग करें जब FTP फ़ाइल है, उदाहरण के लिए, ABC2005.nc\_TEMP। फिर, फ़ाइलNameRegex परीक्षण (नीचे देखें) यह संकेत देगा कि यह एक प्रासंगिक फ़ाइल नहीं है। FTP प्रक्रिया पूरी होने के बाद, फ़ाइल को सही नाम में बदलें। नामकरण प्रक्रिया फ़ाइल को तत्काल में प्रासंगिक होने का कारण बनाती है।
फ़ाइल का नाम निकालें

\[यह सुविधा डीपीआरईसीटेड है। कृपया उपयोग करें\\\* फ़ाइलनाम छद्मsourceNameइसके बजाय।\]
EDDTableFromFiles में प्रत्येक फ़ाइल नाम से स्ट्रिंग निकालने और इसका उपयोग करने के लिए एक प्रणाली होती है। वर्तमान में, इन स्ट्रिंग्स को दिनांक / समय के रूप में व्याख्या करने की कोई व्यवस्था नहीं है। इस प्रणाली को स्थापित करने के लिए कई XML टैग हैं। यदि आपको इस प्रणाली के सभी हिस्से की आवश्यकता नहीं है, तो कृपया इन टैग को निर्दिष्ट न करें या "" मानों का उपयोग न करें।

  • PreExtractRegex एक हैनियमित अभिव्यक्ति (ट्यूटोरियल) फ़ाइल नाम की शुरुआत से हटाने के लिए पाठ की पहचान करने के लिए उपयोग किया जाता है। हटाने केवल तभी होता है जब रेगेक्स मैच होता है। यह आमतौर पर "^" से शुरू होता है ताकि फ़ाइल नाम की शुरुआत की जा सके।
  • पोस्ट ExtractRegex एक नियमित अभिव्यक्ति है जिसका उपयोग फ़ाइल नाम के अंत से हटाने के लिए पाठ की पहचान करने के लिए किया जाता है। हटाने केवल तभी होता है जब रेगेक्स मैच होता है। यह आमतौर पर फ़ाइल नाम के अंत से मिलान करने के लिए "$" के साथ समाप्त होता है।
  • अर्क यदि वर्तमान में, इस नियमित अभिव्यक्ति का उपयोग प्रीएक्सट्रैक्ट रेगेक्स और पोस्टएक्सट्रैक्ट रेगेक्स के बाद किया जाता है ताकि फ़ाइल नाम से निकाला जा सके। (उदाहरण के लिए,stationID) । यदि रेगेक्स मैच नहीं होता है, तो पूरे फाइल नाम का उपयोग किया जाता है (माइनस प्रीएक्सट्रैक्ट और पोस्ट निकालें) । "." का उपयोग करने के लिए पूरी फ़ाइल नाम से मिलान करें जो प्री एक्सट्रैक्ट रेगेक्स और पोस्ट एक्सट्रैक्ट रेगेक्स के बाद छोड़ दिया गया है।
  • स्तंभ NameForExtract is डेटा स्तंभ स्रोत नाम के लिए निकाले गए स्ट्रिंग्स. AdataVariableइसके साथsourceNameहोना चाहिएdataVariableसूची (किसी भी डेटा प्रकार के साथ, लेकिन आमतौर पर स्ट्रिंग) ।

उदाहरण के लिए, यदि किसी डेटासेट में XYZAble जैसे नामों के साथ फ़ाइलें हैं.ncXYZBaker.ncXYZCharlie.nc, ..., और आप एक नया परिवर्तनीय बनाना चाहते हैं (stationID) जब प्रत्येक फ़ाइल को पढ़ा जाता है तो स्टेशन आईडी मान होगा (Able, Baker, Charlie, ......) फ़ाइल नाम से निकाला गया, आप इन टैग का उपयोग कर सकते हैं:

  • <PreExtractRegex>^ XYZ</preExtractRegex> प्रारंभिक ^ एक नियमित अभिव्यक्ति विशेष चरित्र है जो बल देता हैERDDAP™XYZ को फ़ाइल नाम की शुरुआत में देखने के लिए। यह XYZ का कारण बनता है, यदि फ़ाइल नाम की शुरुआत में पाया जाता है, तो हटाया जाना चाहिए। (उदाहरण के लिए, फ़ाइल नाम XYZAble.ncAble.nc) ।
  • <postExtractRegex> \.nc$</postExtractRegex> अंत में $ एक नियमित अभिव्यक्ति विशेष चरित्र है जो बल देता हैERDDAP™देखने के लिए.ncफ़ाइल नाम के अंत में। चूंकि एक नियमित अभिव्यक्ति विशेष चरित्र है (जो किसी भी चरित्र से मेल खाता है) यह \\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\)\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ यहाँ (क्योंकि 2E एक अवधि के लिए हेक्साडेसिमल वर्ण संख्या है) । इस कारण.ncयदि फ़ाइल नाम के अंत में पाया जाता है, तो हटाया जाना चाहिए (उदाहरण के लिए, आंशिक फ़ाइल नाम Able.ncAble) ।
  • <Regex<Regex
  • नियमित अभिव्यक्ति सभी शेष वर्णों से मेल खाती है (उदाहरण के लिए, आंशिक फ़ाइल नाम Able पहली फ़ाइल के लिए निकालने बन जाता है) ।
  • <स्तंभNameForExtract>stationID</columnNameForExtract> यह बताता हैERDDAP™एक नया स्रोत स्तंभ बनाने के लिए बुलायाstationIDप्रत्येक फ़ाइल को पढ़ने पर। किसी दिए गए फ़ाइल के लिए डेटा की हर पंक्ति में उसके फ़ाइल नाम से निकाला गया पाठ होगा (उदाहरण के लिए, Able) मूल्य के रूप मेंstationIDस्तंभ।

ज्यादातर मामलों में, इन निकालने वाले टैग के लिए कई मान हैं जो समान परिणाम उत्पन्न करेंगे - नियमित अभिव्यक्ति बहुत लचीला है। लेकिन कुछ मामलों में, वांछित परिणाम प्राप्त करने का सिर्फ एक तरीका है।  

PseudosourceNames

प्रत्येक डेटासेट में प्रत्येक परिवर्तनीयERDDAP™[a]<sourceName> (#sourcename) जो परिवर्तनीय के लिए स्रोत के नाम को निर्दिष्ट करता है। EDDTableFromFiles कुछ छद्म समर्थन करता हैsourceNameजो कुछ अन्य जगहों से मूल्य निकालते हैं (उदाहरण के लिए, फ़ाइल का नाम या वैश्विक विशेषता का मूल्य) और उस मान को बढ़ावा देना डेटा के उस हिस्से के लिए स्थिर मूल्यों का एक स्तंभ होना (उदाहरण के लिए, उस फ़ाइल के डेटा की तालिका) । इन चरों के लिए, आपको इसके माध्यम से चर के डेटा प्रकार को निर्दिष्ट करना होगा [<Datatype> (#datatype) टैग यदि निकाली गई जानकारी एक डेटटाइम स्ट्रिंग है, तो आप डेटटाइम स्ट्रिंग के प्रारूप को निर्दिष्ट करते हैंयूनिट विशेषता। छद्मsourceNameविकल्प हैं:  

वैश्विक:sourceNames

प्रत्येक स्रोत डेटा फ़ाइल में एक वैश्विक मेटाडाटा विशेषता को डेटा का एक स्तंभ माना जा सकता है। यदि एक चर है<sourceName> प्रारूप है

        <sourceName>global:*attributeName*</sourceName>

जबERDDAP™डेटा को एक फ़ाइल से पढ़ रहा है,ERDDAP™उस नाम की वैश्विक विशेषता की तलाश करेंगे (उदाहरण के लिए, पीआई) और विशेषता के मूल्य से भरा एक स्तंभ बनाते हैं। यह उपयोगी है जब विशेषता में विभिन्न स्रोत फ़ाइलों में अलग-अलग मान होते हैं, क्योंकि अन्यथा, उपयोगकर्ता केवल संपूर्ण डेटासेट के लिए उन मूल्यों में से एक देखेंगे। उदाहरण के लिए,

        <sourceName>global:PI</sourceName>

जब आप डेटा होने की विशेषता को बढ़ावा देते हैं,ERDDAP™इसी विशेषता को हटा देता है। यह उपयुक्त है क्योंकि मूल्य संभवतः प्रत्येक फ़ाइल में अलग है; जबकि कुल डेटासेट मेंERDDAP™यह केवल एक ही मूल्य होगा। यदि आप चाहते हैं, तो आप जोड़कर पूरे डेटासेट के लिए विशेषता के लिए एक नया मूल्य जोड़ सकते हैं<att name विशेषता नाम >> नया मूल्य </att> डेटासेट के वैश्विक [<addAttributes> (#addattributs) । वैश्विक विशेषताओं के लिएERDDAP™आवश्यकता है, उदाहरण के लिए, संस्था, आप विशेषता के लिए एक नया मूल्य जोड़ सकते हैं।  

चर:sourceNames

प्रत्येक फ़ाइल में एक परिवर्तनीय मेटाडाटा विशेषता को डेटा का एक स्तंभ माना जा सकता है। यदि एक चर है<sourceName\> प्रारूप है

        <sourceName>variable:*variableName*:*attributeName*<sourceName>

जबERDDAP™डेटा को एक फ़ाइल से पढ़ रहा है,ERDDAP™निर्दिष्ट विशेषता के लिए दिखेगा (उदाहरण के लिए, ID) निर्दिष्ट चर (उदाहरण के लिए, साधन) और विशेषता के मूल्य से भरा एक स्तंभ बनाते हैं। माता-पिता चर (उदाहरण के लिए, साधन) नहीं होना चाहिएdataVariableमें डेटासेट की परिभाषा में शामिलERDDAP। उदाहरण के लिए,

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

यह उपयोगी है जब विशेषता में विभिन्न स्रोत फ़ाइलों में अलग-अलग मान होते हैं, क्योंकि अन्यथा, उपयोगकर्ता केवल संपूर्ण डेटासेट के लिए उन मूल्यों में से एक देखेंगे।

जब आप डेटा होने की विशेषता को बढ़ावा देते हैं,ERDDAP™इसी विशेषता को हटा देता है। यह उपयुक्त है क्योंकि मूल्य संभवतः प्रत्येक फ़ाइल में अलग है; जबकि कुल डेटासेट मेंERDDAP™यह केवल एक ही मूल्य होगा। यदि आप चाहते हैं, तो आप जोड़कर पूरे डेटासेट के लिए विशेषता के लिए एक नया मूल्य जोड़ सकते हैं<att name विशेषता नाम >> नया मूल्य </att> चर के लिए [<addAttributes> (#addattributs) । विशेषताओं के लिएERDDAP™आवश्यकता है, उदाहरण के लिए,ioos\_category (अपने सेटअप के आधार पर) , आप विशेषता के लिए एक नया मूल्य जोड़ सकते हैं।

फ़ाइल नामsourceNames

आप एक फ़ाइल की फ़ाइल नाम का हिस्सा निकाल सकते हैं और इसे बढ़ावा दे सकते हैं कि डेटा का एक स्तंभ है। इस छद्म के लिए प्रारूप [<sourceName> (#sourcename) है

        <sourceName>\\*\\*\\*fileName,*regex*,*captureGroupNumber*</sourceName>

उदाहरण के लिए,

        <sourceName>\\*\\*\\*fileName,A(\\d{12})\\.slcpV1.nc,1</sourceName>

जब EDDTableFromFiles एक फ़ाइल से डेटा पढ़ रहा है, तो यह सुनिश्चित करेगा कि फ़ाइल नाम (उदाहरण के लिए, A201807041442.slcpV1.nc) निर्दिष्ट नियमित अभिव्यक्ति से मेल खाता है ("regex") और निर्दिष्ट निकालने (इस मामले में, पहला) समूह (जो माता-पिता से घिरा हुआ हिस्सा है) उदाहरण के लिए, "201807041442"। (इसे देखेंरेगेक्स प्रलेखनऔरRegex ट्यूटोरियल।) रेगेक्स को किसी स्ट्रिंग के रूप में निर्दिष्ट किया जा सकता है जिसके साथ या आसपास के उद्धरण के बिना। यदि रेगेक्स को आसपास के उद्धरणों के साथ स्ट्रिंग के रूप में निर्दिष्ट किया जाता है, तो स्ट्रिंग को होना चाहिए।JSON-style स्ट्रिंग (विशेष पात्रों के साथ बच) । आम तौर पर कब्जा समूह संख्या 1 है (पहला कैप्चर समूह) लेकिन किसी भी नंबर हो सकता है।  

पथनामsourceNames

आप फ़ाइल के पूर्ण पथ का हिस्सा निकाल सकते हैं नाम (/निर्देशिका/fileName.ext) और इसे बढ़ावा देने के लिए डेटा का एक स्तंभ होना। इस छद्म के लिए प्रारूप [<sourceName> (#sourcename) है

        <sourceName>\\*\\*\\*pathName,*regex*,*captureGroupNumber*<sourceName>

उदाहरण के लिए,

        <sourceName>\\*\\*\\*pathName,/data/myDatasetID/(\\[A-Z0-9\\]\\*)/B(\\d{12}).nc,1</sourceName>

जब EDDTableFromFiles एक फ़ाइल से डेटा पढ़ रहा है, तो यह सुनिश्चित करेगा कि पूरा पथनाम (उदाहरण के लिए, /data/myDatasetID/BAY17/B201807041442.nc। इस परीक्षण के लिए, निर्देशिका विभाजक हमेशा होगा'/'कभी नहीं ') निर्दिष्ट नियमित अभिव्यक्ति से मेल खाता है ("regex") और निर्दिष्ट निकालने (इस मामले में, पहला) समूह (जो माता-पिता से घिरा हुआ हिस्सा है) उदाहरण के लिए, "BAY17"। (इसे देखेंरेगेक्स प्रलेखनऔरRegex ट्यूटोरियल।) रेगेक्स को किसी स्ट्रिंग के रूप में निर्दिष्ट किया जा सकता है जिसके साथ या आसपास के उद्धरण के बिना। यदि रेगेक्स को आसपास के उद्धरणों के साथ स्ट्रिंग के रूप में निर्दिष्ट किया गया है, तो स्ट्रिंग होना चाहिएJSON-style स्ट्रिंग (विशेष पात्रों के साथ बच) । आम तौर पर कब्जा समूह संख्या 1 है (पहला कैप्चर समूह) लेकिन किसी भी नंबर हो सकता है।  

"0 फाइलें" त्रुटि संदेश
  • यदि आप दौड़ते हैंजनरेट DatasetXmlयादासयदि आप एक EDDTableFrom लोड करने की कोशिश करते हैं, या यदि आप EDDTableFrom लोड करने की कोशिश करते हैं ... में फ़ाइलें डेटासेटERDDAP™, और आपको "0 फाइलें" त्रुटि संदेश मिलता है जो दर्शाता है किERDDAP™निर्देशिका में 0 मिलान फ़ाइलों को पाया (जब आपको लगता है कि उस निर्देशिका में फ़ाइलों को मिलान करना है) :
    • जाँच करें कि वास्तव में फ़ाइलें उस निर्देशिका में हैं।
    • निर्देशिका नाम की वर्तनी की जाँच करें।
    • फ़ाइल NameRegex की जाँच करें। वास्तव में, वास्तव में regexes के साथ गलतियों को करना आसान है। परीक्षण प्रयोजनों के लिए, रेगेक्स की कोशिश करें। (इसे देखेंरेगेक्स प्रलेखनऔरRegex ट्यूटोरियल।)
    • जांचें कि वह उपयोगकर्ता जो प्रोग्राम चला रहा है (उदाहरण के लिए, उपयोगकर्ता=tomcat (?) टॉमकैट के लिएERDDAP) उन फ़ाइलों के लिए 'रीड' अनुमति है।
    • कुछ ऑपरेटिंग सिस्टम में (उदाहरण के लिए, SELinux) और सिस्टम सेटिंग्स के आधार पर, जो उपयोगकर्ता ने कार्यक्रम को चलाने के लिए फ़ाइलों की निर्देशिका के लिए अग्रणी डायरेक्टरी की पूरी श्रृंखला के लिए 'रीड' अनुमति होनी चाहिए।  
मानकीकरण क्या
  • जब EDDTableFromFiles का कोई भी उपश्रेणी किसी दिए गए चर के लिए स्रोत फ़ाइलों का एक सेट एकत्र कर रहा है, तो सभी स्रोत फ़ाइलों MUST के पास कई विशेषताओं के लिए समान विशेषता मान हैं:scale\_factor,add\_offset, \_Unsigned,missing\_value, \_FillValue, और इकाइयों). इसके बारे में सोचें: यदि एक फ़ाइल में विंडस्पीड यूनिट = नॉट्स है और किसी अन्य में विंडस्पीड यूनिट = m/s है, तो दो फाइलों से डेटा मानों को समान डेटासेट में शामिल नहीं किया जाना चाहिए। इसलिए, जब EDDTableFromFiles पहले डेटासेट बनाता है, तो यह एक फ़ाइल से विशेषता मान पढ़ता है, फिर उन सभी फाइलों को अस्वीकार करता है जिनके पास उन महत्वपूर्ण विशेषताओं के लिए अलग-अलग मान हैं। फ़ाइलों के अधिकांश संग्रह के लिए, यह एक समस्या नहीं है क्योंकि सभी चरों की विशेषताएं सुसंगत हैं। हालांकि, फ़ाइलों के अन्य संग्रहों के लिए, यह 1%, 10%, 50%, 90% या यहां तक कि 99% फाइलों को "bad" फ़ाइलों के रूप में अस्वीकार कर दिया जा सकता है। यह परेशानी है।

EDDTableFrom फ़ाइलों को इस समस्या से निपटने के लिए एक प्रणाली है: मानकीकरण क्या? मानकीकरण क्या सेटिंग EDDTableFromFiles को फाइल को मानकीकृत करने के लिए बताती है जैसे ही यह उन्हें पढ़ता है, इससे पहले कि EDDTableFromFiles यह देखने के लिए कि वे सुसंगत हैं या नहीं।

फ्लिप साइड है: यदि डेटासेट में इस समस्या को नहीं है, तो मानकीकरण का उपयोग न करें क्या? मानकीकरण जोखिम क्या है (नीचे चर्चा) और अक्षमता। इसलिए यदि आपको वास्तव में मानकीकरण की सुविधाओं की आवश्यकता नहीं है क्या, संभावित जोखिम और अक्षमता का सामना करने की कोई आवश्यकता नहीं है। सबसे बड़ी अक्षमता है: जब विभिन्न मानकीकरण डेटासेट द्वारा किस विकल्प का उपयोग किया जाता है, इसका मतलब है कि स्रोत फाइलें डेटा को काफी अलग तरीके से स्टोर कर रही हैं। (उदाहरण के लिए, विभिन्न के साथscale\_factorऔरadd\_offsetविभिन्न प्रारूपों का उपयोग करके या समय स्ट्रिंग के साथ) । इस प्रकार, किसी उपयोगकर्ता अनुरोध में दिए गए बाधा के लिए, कोई रास्ता नहीं हैERDDAP™एक एकल स्रोत स्तर की बाधा बनाने के लिए जिसे सभी स्रोत फ़ाइलों पर लागू किया जा सकता है। तोERDDAP™केवल प्रभावित बाधाओं को उच्च स्तर पर लागू कर सकते हैं। तोERDDAP™उच्च, गंतव्य स्तर की बाधाओं को लागू करने से पहले डेटा को अधिक फ़ाइलों से पढ़ना पड़ता है। इसलिए डेटासेट का अनुरोध करता है जो मानकीकरण का उपयोग करता है अब क्या संसाधित किया जा सकता है।

इस प्रणाली का उपयोग करने के लिए आपको निर्दिष्ट करना होगा

    <standardizeWhat>*standardizeWhat*</standardizeWhat>  

मेंdatasets.xmlEDDTableFrom के लिए ... फ़ाइलें(साथ)<डेटासेट> टैग।

The The most of the मानकीकरण क्या मान निर्दिष्ट करता है कि कौन बदलता है EDDTableFromFiles को लागू करने की कोशिश करनी चाहिए। परिवर्तन कुछ संयोजन के योग हैं:

  1. अनपैक यह फ़ाइलों में संख्यात्मक स्तंभों को मानकीकृत करने के लिए कई सामान्य और सुरक्षित संचालन करता है:
    • अगरscale\_factorऔर/oradd\_offsetविशेषताएँ मौजूद हैं, उन्हें हटा दें और उन्हें डेटा मूल्यों को अनपैक करने के लिए लागू करें।
    • Unpacked विशेषताओं (उदाहरण के लिए, वास्तविक \min, वास्तविक \max,actual\_range,data\_min,data\_max, डेटा \_range,valid\_min,valid\_max,valid\_range) यदि वेरिएबल पैक किया गया था, और यदि विशेषता मूल्यों को पैक किया गया था, तो, (यह मुश्किल है, लेकिन वास्तव में विश्वसनीय) ।
    • यदि \_FillValue और/ormissing\_valueमौजूद हैं, उन डेटा मूल्यों को परिवर्तित करने के लिएERDDAP"मानक" लापता मान: पूर्णांक प्रकारों के लिए मैक्स \_VALUE (उदाहरण के लिए, बाइट्स के लिए 127, लघु के लिए 32,767 और इंट्स के लिए 2,147,483,647, 9223372036854807 लंबे समय तक) और डबल्स और फ्लोट्स के लिए NaN।
    • पुराने \FillValue और/or निकालेंmissing\_valueगुण (यदि कोई हो) और उन्हें सिर्फ \_FillValue= के साथ बदलें\[The number of theERDDAP™मानक लापता मान\]।  
  2. मानकीकृत न्यूमेरिक टाइम्स यदि एक संख्यात्मक स्तंभ में CF-style संख्यात्मक समय इकाई है (" समय बाद में बेसटाइम ", उदाहरण के लिए, "दिन 1900-01-01 के बाद से") यह तारीख बदलता है समय मूल्यों में"seconds since 1970-01-01T00:00:00Z"यह इंगित करने के लिए इकाइयों को मान और बदल देता है। यदि यह चुना गया है और वहाँ एक मौका है कि इस चर हैscale\_factorयाadd\_offset, #1 MUST को भी चुना जाना चाहिए।  
  3. स्ट्रिंग लागू करेंmissing\_value
    यदि एक स्ट्रिंग कॉलम में \_FillValue और/or हैmissing\_valueगुण, यह उन मूल्यों को "" में बदल देता है और विशेषताओं को हटा देता है।  
  4. न्यूमेरिक का पता लगाएंmissing\_value
    यदि एक संख्यात्मक स्तंभ में \_FillValue या नहीं हैmissing\_valueगुण, यह एक अपरिभाषित संख्यात्मक की पहचान करने की कोशिश करता हैmissing\_value (उदाहरण के लिए, -999, 9999, 1e37f) और इसके उदाहरणों को "मानक" मानों में परिवर्तित करें (पूर्णांक प्रकार के लिए मैक्स \_VALUE, और डबल्स और फ्लोट्स के लिए NAN) । इस विकल्प का जोखिम है: यदि सबसे बड़ा या छोटा वैध डेटा मान एक लापता मान की तरह दिखता है (उदाहरण के लिए, 999) तब उन वैध डेटा मूल्यों को लापता मूल्यों में परिवर्तित किया जाएगा (उदाहरण के लिए, नान) ।  
  5. स्ट्रिंग बदलें "N/A" to "" प्रत्येक स्ट्रिंग कॉलम के लिए, कई स्ट्रिंग्स को आमतौर पर "" के लिए एक लापता स्ट्रिंग मान को इंगित करने के लिए उपयोग किया जाता है। वर्तमान में, यह ".", "...", "-", "?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? स्ट्रिंग खोज केस-असंवेदनशील है और स्ट्रिंग्स के बाद लागू होती है। "nd" और "other" विशेष रूप से सूची में नहीं हैं। इस विकल्प का जोखिम है: जिन स्ट्रिंग्स को आप मानते हैं कि वे वैध मानों को "" में परिवर्तित किया जा सकता है।  
  6. स्ट्रिंग ISO 8601 DateTimes के लिए मानकीकृत प्रत्येक स्ट्रिंग कॉलम के लिए, पूरी तरह से संख्यात्मक स्ट्रिंग डेटटाइम को बदलने की कोशिश करें (उदाहरण के लिए, "जनवरी 2, 2018") ISO 8601 स्ट्रिंग dateTimes (2018-01-02) । नोट कि स्तंभ के लिए सभी डेटा मान उसी प्रारूप का उपयोग करना चाहिए, अन्यथा, यह विकल्प किसी दिए गए कॉलम में कोई बदलाव नहीं करेगा। इस विकल्प का जोखिम है: यदि स्ट्रिंग मूल्यों के साथ एक स्तंभ होता है जो सिर्फ एक सामान्य तारीख की तरह दिखने वाला होता है टाइम प्रारूप, उन्हें ISO 8601 स्ट्रिंग डेटटाइम्स में परिवर्तित किया जाएगा।  
  7. आईएसओ 8601 डेटटाइम्स के लिए कॉम्पैक्ट डेटटाइम्स को मानकीकृत करें प्रत्येक स्ट्रिंग या पूर्णांक-प्रकार के कॉलम के लिए, पूरी तरह से संख्यात्मक स्ट्रिंग डेटटाइम्स को बदलने की कोशिश करें (उदाहरण के लिए, "20180102") ISO 8601 स्ट्रिंग dateTimes (2018-01-02) । नोट कि स्तंभ के लिए सभी डेटा मान उसी प्रारूप का उपयोग करना चाहिए, अन्यथा, यह विकल्प किसी दिए गए कॉलम में कोई बदलाव नहीं करेगा। इस विकल्प का जोखिम है: यदि मूल्य के साथ एक स्तंभ है जो कॉम्पैक्ट तारीख नहीं है टाइम्स लेकिन कॉम्पैक्ट डेटटाइम्स की तरह दिखते हैं, उन्हें आईएसओ 8601 स्ट्रिंग डेटटाइम्स में परिवर्तित किया जाएगा।  
  8. मानक इकाइयों यह प्रत्येक चर के लिए इकाइयों स्ट्रिंग को मानकीकृत करने की कोशिश करता है। उदाहरण के लिए, "मीटर प्रति सेकंड", "मीटर / सेकंड","m.s^-1","m s-1"सभी को "m.s-1" में परिवर्तित किया जाएगा। यह डेटा मान नहीं बदलता है। यह वैध के लिए अच्छी तरह से काम करता हैUDUNITSइकाइयों के तार, लेकिन अमान्य या जटिल स्ट्रिंग्स के साथ समस्याएं हो सकती हैं। आप विशिष्ट से जोड़े में निर्दिष्ट करके समस्याओं से निपट सकते हैं<StandardizeUdunits> मेंERDDAP' \[tomcat\]/ webapps/erddap/WEB-INF/classes/gov/noaa/pfel/erddap/util/message.xml फ़ाइल. कृपया किसी भी बदलाव को ईमेल करें जिसे आप क्रिस में बनाते हैं। जॉन noaa.gov पर इसलिए उन्हें डिफ़ॉल्ट संदेश.xml में शामिल किया जा सकता है। इस विकल्प का जोखिम है: यह कुछ जटिल या अमान्य इकाइयों को जोड़ सकता है; हालांकि, यदि वे होते हैं तो आप समस्याओं को दूर करने के लिए ऊपर वर्णित वर्क-अराउंड का उपयोग कर सकते हैं।  

मानकीकरण का डिफ़ॉल्ट मान 0 क्या है, जो कुछ नहीं करता है।

यदि आप मानकीकरण का मान बदलते हैं क्या, अगली बार डेटासेट को पुनः लोड किया जाता है,ERDDAP™प्रत्येक फ़ाइल के बारे में जानकारी के साथ मिनी-डाटाबेस का पुनर्निर्माण करने के लिए डेटासेट के लिए सभी डेटा फ़ाइलों को फिर से पढ़ेगा। यदि डेटासेट में बहुत सारी फाइलें हैं, तो यह लंबे समय तक ले जाएगा।

नोट्स:

  • एक मुश्किल बात है - मानकीकरण क्या सेटिंग स्रोत फ़ाइल में सभी स्तंभों के लिए प्रयोग किया जाता है। इसलिए, उदाहरण के लिए, #2048 का उपयोग सफलतापूर्वक आईएसओ 8601 स्ट्रिंग डेटटाइम्स में कॉम्पैक्ट स्ट्रिंग डेटटाइम्स के एक स्तंभ को परिवर्तित कर सकता है, लेकिन यह गलती से स्ट्रिंग्स के साथ एक कॉलम को परिवर्तित कर सकता है जो सिर्फ कॉम्पैक्ट डेटटाइम्स की तरह दिखने वाला होता है।  
  • datasets.xmlऔर GenerateDatasets Xml - सेटिंग्स को सही करने के लिए विशेष रूप से मुश्किल हैdatasets.xmlअपने डेटासेट को उस तरीके से काम करने के लिए जिसे आप चाहते हैं। सबसे अच्छा दृष्टिकोण (हमेशा) है:
    1. उपयोगजनरेट DatasetXmlमानकीकृत मूल्य निर्दिष्ट करें क्या आप उपयोग करना चाहते हैं?
    2. उपयोगदासयह सुनिश्चित करने के लिए कि डेटासेट सही ढंग से लोड हो रहा है और मानकीकरण को प्रतिबिंबित करता है आप किस सेटिंग को निर्दिष्ट करते हैं।
    3. जब यह होता है तो डेटासेट को हाथ से टेस्ट करेंERDDAP™यह सुनिश्चित करने के लिए कि प्रभावित चर उम्मीद के रूप में काम करते हैं।  
  • जोखिम विकल्प # 256 और ऊपर जोखिम भरा है, यानी, एक बड़ा मौका है किERDDAP™ऐसा परिवर्तन होगा जिसे नहीं बनाया जाना चाहिए। उदाहरण के लिए, विकल्प #2048 गलती से स्टेशन आईडी स्ट्रिंग्स के साथ एक चर को परिवर्तित कर सकता है जो सभी सिर्फ ISO 8601 "कॉम्पैक्ट" तारीख देखने के लिए होते हैं। (उदाहरण के लिए, 20180102) ISO 8601 में"extended"तारीख (2018-01-02) ।  
  • बदलाव के बाद धीमा -- मानकीकरण का मूल्य क्या डेटा मानों को बदलता है कि EDDTableFromFiles प्रत्येक डेटा फ़ाइल के लिए देखता है, यदि आप मानकीकृत बदलते हैं क्या सेटिंग, EDDTableFromFiles प्रत्येक फ़ाइल के बारे में सभी कैश्ड जानकारी को फेंक देगा (जिसमें प्रत्येक फ़ाइल में प्रत्येक डेटा चर के लिए मिनट और अधिकतम शामिल है) और प्रत्येक डेटा फ़ाइल को फिर से पढ़ें। यदि किसी डेटासेट में बड़ी संख्या में फाइलें हैं, तो यह बहुत समय लेने वाला हो सकता है, इसलिए पहली बार डेटासेट के लिए डेटासेट को फिर से लोड करने का समय लगेगा।ERDDAP™बदलने के बाद इसे फिर से लोड करें।  
  • हेरिस्टिक्स - विकल्प # 256 और ऊपर अपने परिवर्तन करने के लिए हेरिस्टिक्स का उपयोग करें। यदि आप एक ऐसी स्थिति में आते हैं जहां हेरिस्टिक्स खराब निर्णय लेते हैं, तो कृपया क्रिस को समस्या का वर्णन ईमेल करें। जॉन नोआ में। सरकार तो हम heuristics में सुधार कर सकते हैं।  
  • विकल्प यदि मानकीकरण में से एक विकल्प दिए गए डेटासेट के लिए कोई समस्या हल नहीं करता है, तो आप समस्या को हल कर सकते हैं.ncमिली फाइलप्रत्येक डेटा फ़ाइल को समांतरित करने और फ़ाइलों में चीजों में बदलाव को परिभाषित करने के लिए ताकि फ़ाइलों के अनुरूप हो। फिर, EDDTableFrom को बताएं ... फ़ाइल डेटासेट को कुल करने के लिए.ncमिली फ़ाइलें।

या, उपयोगNCOवास्तव में फ़ाइलों में बदलाव करने के लिए ताकि फ़ाइलों को संगत कर रहे हैं।

वर्ष के लिए अलग कॉलम, महीना, दिनांक, समय, मिनट, दूसरा

यह सारणीबद्ध डेटा फ़ाइलों के लिए काफी आम है, जो साल, महीने, तारीख, घंटे, मिनट, दूसरे के लिए अलग-अलग कॉलम हैं। पहलेERDDAP™v2.10, एकमात्र समाधान उन स्तंभों को एकीकृत समय कॉलम में जोड़ने के लिए डेटा फ़ाइल को संपादित करना था। साथERDDAP™2.10+, आप उपयोग कर सकते हैं [<sourceName>= अभिव्यक्ति <sourceName> (#sourcename) बताने के लिएERDDAP™कैसे एक एकीकृत समय स्तंभ बनाने के लिए स्रोत स्तंभों को गठबंधन करने के लिए, इसलिए अब आपको स्रोत फ़ाइल को संपादित करने की आवश्यकता नहीं है।

<कप्तानToRegex>
  • [<स्किपहेडरToRegex> (#kipheadertoregex) -- वैकल्पिक। (EDDTableFromAsciiFiles और EDDTableFromColumnarAsciiFiles केवल डेटासेट के लिए।)
    जब EDDTableFromAsciiFiles एक डेटा फ़ाइल पढ़ता है, तो यह सभी लाइनों को अनदेखा करेगा और उस रेखा को शामिल करेगा जो इस नियमित अभिव्यक्ति से मेल खाती है। डिफ़ॉल्ट " है, जो इस विकल्प का उपयोग नहीं करता है। उदाहरण है
    <skipHeaderToRegex>\\\*\\\*\\\* END OF HEADER.\\*<skipHeaderToRegex>  

जो सभी लाइनों को अप करने के लिए और एक लाइन है कि "के साथ शुरू होता है सहित अनदेखा करेगा\*\** हेडर का अंत।

जब आप इस टैग का उपयोग करते हैं,<कॉलमNamesRow> और<पहलेDataRow> यह कार्य करता है कि फ़ाइल पढ़ने से पहले हेडर को हटा दिया गया है। उदाहरण के लिए, यदि कॉलम नाम हेडर के बाद पंक्ति पर हैं तो आप स्तंभ नामों का उपयोग करेंगे।

यदि आप जनरेट करना चाहते हैं डेटासेट Xml एक डेटासेट के साथ जो इस टैग की जरूरत है:

  1. मौजूदा फाइल की प्रतिलिपि करके और हेडर को हटाकर एक नया, अस्थायी, नमूना फ़ाइल बनाएं।
  2. रन जनरेट डेटासेट XML और उस नमूना फ़ाइल निर्दिष्ट करें।
  3. मैन्युअल रूप से जोड़ें<स्किपHeaderToRegex> टैग करने के लिएdatasets.xmlभाग।
  4. अस्थायी, नमूना फ़ाइल को हटा दें।
  5. में डेटासेट का उपयोग करेंERDDAP।
<स्किपलिन्स रेगेक्स एंड जीटी;

वैकल्पिक। (EDDTableFromAsciiFiles और EDDTableFromColumnarAsciiFiles केवल डेटासेट के लिए।)
जब EDDTableFromAsciiFiles एक डेटा फ़ाइल पढ़ता है, तो यह उन सभी लाइनों को अनदेखा करेगा जो इस नियमित अभिव्यक्ति से मेल खाते हैं। डिफ़ॉल्ट " है, जो इस विकल्प का उपयोग नहीं करता है। उदाहरण है

    <skipLinesRegex>#.\\*<skipLinesRegex>  

जो "#" के साथ शुरू होने वाली सभी लाइनों को अनदेखा करेगा।

जब आप इस टैग का उपयोग करते हैं,<कॉलमNamesRow> और<पहलेDataRow> यह कार्य करता है कि फ़ाइल पढ़ने से पहले सभी मिलान लाइनों को हटा दिया गया है। उदाहरण के लिए, आप स्तंभNamesRow=0 का उपयोग करेंगे, भले ही फ़ाइल की शुरुआत में कई लाइनें शुरू हो जाएं।

EDDTableFromFiles कंकाल XML

  <dataset type="EDDTableFrom...Files" datasetID\="..." active\="..." >
      <nDimensions>...</nDimensions> <!-- This was used prior to ERDDAP™
        version 1.30, but is now ignored. -->
      <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
      <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
      <reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
      <updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
        EDDTableFromFiles subclasses, this uses Java's WatchDirectory system
        to notice new/deleted/changed files quickly and efficiently. -->
      <standardizeWhat>...</standardizeWhat> <!-- 0 or 1 -->
      <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
      <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
      <addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
      <nThreads>...</nThreads> <!-- 0 or 1 -->
      <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
      <iso19115File>...</iso19115File> <!-- 0 or 1 -->
      <onChange>...</onChange> <!-- 0 or more -->
      <specialMode>mode</specialMode> <-- This rarely-used, OPTIONAL tag
        can be used with EDDTableFromThreddsFiles to specify that special,
        hard-coded rules should be used to determine which files should
        be downloaded from the server. Currently, the only valid mode
        is SAMOS which is used with datasets from
        https://tds.coaps.fsu.edu/thredds/catalog/samos to download only the
        files with the last version number. -->
      <sourceUrl>...</sourceUrl> <-- For subclasses like
        EDDTableFromHyraxFiles and EDDTableFromThreddsFiles, this is where
        you specify the base URL for the files on the remote server.
        For subclasses that get data from local files, ERDDAP™ doesn't use
        this information to get the data, but does display the
        information to users. So I usually use "(local files)". -->
      <fileDir>...</fileDir> <-- The directory (absolute) with the data
        files. -->
      <recursive>true|false</recursive> <!-- 0 or 1. Indicates if
        subdirectories of fileDir have data files, too. -->
      <pathRegex>...</pathRegex> <!-- 0 or 1. Only directory names which
        match the pathRegex (default=".\") will be accepted. -->
      <fileNameRegex>...</fileNameRegex> <-- 0 or 1. A regular expression
        (tutorial) describing valid data file names, for example,
            ".\
\.nc" for all .nc files. -->
      <accessibleViaFiles>true|false(default)</accessibleViaFiles>
        <!-- 0 or 1 -->
      <metadataFrom>...</metadataFrom> <-- The file to get metadata
        from ("first" or "last" (the default) based on file's
        lastModifiedTime). -->
      <charset>...</charset>
        <!-- (For EDDTableFromAsciiFiles and EDDTableFromColumnarAsciiFiles
        only) This OPTIONAL tag specifies the character set (case
        sensitive!) of the source files, for example, ISO-8859-1
        (the default) and UTF-8. -->
      <skipHeaderToRegex>...</skipHeaderToRegex>
      <skipLinesRegex>...</skipLinesRegex>
      <columnNamesRow>...</columnNamesRow> <-- (For EDDTableFromAsciiFiles
        only) This specifies the number of the row with the column
        names in the files. (The first row of the file is "1".
        Default = 1.) If you specify 0, ERDDAP™ will not look for
        column names and will assign names: Column#1, Column#2, ... -->
      <firstDataRow>...</firstDataRow>
        <-- (For EDDTableFromAsciiFiles and EDDTableFromColumnarAsciiFiles
        only) This specifies the number of the first row with data in the
        files. (The first row of the file is "1". Default = 2.) -->
      <dimensionsCSV>...</dimensionsCSV> <-- (For EDDTableFromNcFiles
        and EDDTableFromMultidimNcFiles only) This is a comma-separated
        list of dimension fullNames. If specified, ERDDAP™ will only read
        variables in the source files which use some or all of these
        dimensions, plus all of the scalar variables. If a dimension
        is in a group, you must specify its fullName,
        e.g., "groupName/dimensionName". -->
      <-- The next four tags are DEPRECATED. For more information, see
        File Name Extracts. -->
      <preExtractRegex>...</preExtractRegex>
      <postExtractRegex>...</postExtractRegex>
      <extractRegex>...</extractRegex>
      <columnNameForExtract>...</columnNameForExtract>
      <sortedColumnSourceName>...</sortedColumnSourceName>
        <-- The sourceName of the numeric column that the data files are
        usually already sorted by within each file, for example, "time".
        Don't specify this or use an empty string if no variable is
        suitable. It is ok if not all files are sorted by this column.
        If present, this can greatly speed up some data requests.
        For EDDTableFromHyraxFiles, EDDTableFromNcFiles and
        EDDTableFromThreddsFiles, this must be the leftmost (first) axis variable.
        EDDTableFromMultidimNcFiles ignores this because it has a better
        system. -->
      <sortFilesBySourceNames>...</sortFilesBySourceNames>
        <-- This is a space-separated list of sourceNames
        which specifies how the internal list of files should be sorted
        (in ascending order), for example "id time".
        It is the minimum value of the specified columns in each file
        that is used for sorting.
        When a data request is filled, data is obtained from the files
        in this order. Thus it determines the overall order of the data
        in the response. If you specify more than one column name, the
        second name is used if there is a tie for the first column; the
        third is used if there is a tie for the first and second
        columns; ... This is OPTIONAL (the default is
        fileDir+fileName order). -->
        
      <sourceNeedsExpandedFP\_EQ>true(default)|false</sourceNeedsExpandedFP\_EQ>
      <fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or
        false (the default)) -->
      <cacheFromUrl>...</cacheFromUrl> <!-- 0 or 1 -->
      <cacheSizeGB>...</cacheSizeGB> <!-- 0 or 1 -->
      <addAttributes>...</addAttributes> <!-- 0 or 1 -->
      <dataVariable>...</dataVariable> <!-- 1 or more -->
        <-- For EDDTableFromHyraxFiles, EDDTableFromMultidimNcFiles,
        EDDTableFromNcFiles, EDDTableFromNccsvFiles, and
        EDDTableFromThreddsFiles, the source's axis variables (for
        example, time) needn't be first or in any specific order. -->
  </dataset>

EDDTableFromAsciiService

EDDTableFromAsciiService अनिवार्य रूप से एक स्क्रीन स्क्रैपर है। यह डेटा स्रोतों से निपटने का इरादा है जिसमें डेटा अनुरोध करने के लिए एक सरल वेब सेवा है। (अक्सर एक वेब पेज पर HTML फॉर्म) और जो कुछ संरचित ASCII प्रारूप में डेटा वापस कर सकते हैं (उदाहरण के लिए, एक कॉमा-separated-value या स्तंभकार ASCII पाठ प्रारूप, अक्सर पहले और/या डेटा के बाद अन्य जानकारी के साथ) ।

EDDTableFromAsciiService सभी EDDTableFromAsciiService. आप सीधे EDDTableFromAsciiService का उपयोग नहीं कर सकते। इसके बजाय, विशिष्ट प्रकार की सेवाओं को संभालने के लिए EDDTableFromAsciiService के एक उपश्रेणी का उपयोग करें:

वर्तमान में, कोई अन्य सेवा प्रकार समर्थित नहीं है। लेकिन अगर वे एक समान तरीके से काम करते हैं तो यह आमतौर पर अन्य सेवाओं का समर्थन करने में आसान होता है। यदि आपके पास अनुरोध है तो हमसे संपर्क करें।

विवरण

निम्नलिखित जानकारी EDDTableFromAsciiService के सभी उपवर्गों पर लागू होती है।

  • --ERDDAP™सारणीबद्ध डेटा अनुरोध किसी भी परिवर्तनीय पर बाधा डाल सकते हैं। अंतर्निहित सेवा सभी चरों पर बाधाओं की अनुमति नहीं दे सकती है। उदाहरण के लिए, कई सेवाएँ केवल स्टेशन नामों, अक्षांश, देशांतर और समय पर बाधाओं का समर्थन करती हैं। इसलिए जब EDDTableFromAsciiService का एक उपश्रेणी डेटासेट की एक सबसेट के लिए एक अनुरोध प्राप्त करता है, तो यह स्रोत डेटा सेवा के लिए संभव के रूप में कई बाधाओं को गुजरता है और फिर सेवा द्वारा लौटाए गए डेटा के लिए शेष बाधाओं को लागू करता है, उपयोगकर्ता को डेटा सौंपने से पहले।
  • मान्य रेंज - कई अन्य डेटासेट प्रकारों के विपरीत, EDDTableFromAsciiService आमतौर पर प्रत्येक चर के लिए डेटा की सीमा को नहीं जानता है, इसलिए यह वैधता सीमा के बाहर डेटा के लिए अनुरोध को तुरंत अस्वीकार नहीं कर सकता है।
  • ASCII पाठ प्रतिक्रिया पार्सिंग -- जब EDDTableFromAsciiService को ASCII टेक्स्ट सर्विस से जवाब मिलता है, तो यह सत्यापित करना चाहिए कि प्रतिक्रिया में अपेक्षित प्रारूप और जानकारी है, और फिर डेटा निकालने का अधिकार है। आप इस डेटासेट के लिए XML के हिस्से में विभिन्न विशेष टैग का उपयोग करके प्रारूप को निर्दिष्ट कर सकते हैं:
    • <beforeData1><पहलेData10> टैग -- आप पाठ के टुकड़ों की एक श्रृंखला निर्दिष्ट कर सकते हैं (जैसा कि आप चाहते हैं, 10 तक) कि EDDTableFromAsciiService को सेवा द्वारा लौटाए गए ASCII टेक्स्ट के हेडर में देखना होगा।<beforeData1><पहले Data10> उदाहरण के लिए, यह सत्यापित करने के लिए उपयोगी है कि प्रतिक्रिया में अपेक्षित इकाइयों का उपयोग करके अपेक्षित चर शामिल हैं। पिछले पहलेडेटा टैग जो आप निर्दिष्ट करते हैं, डेटा शुरू होने से पहले सही होने वाले पाठ की पहचान करता है।
    • <afterData> -- यह उस पाठ को निर्दिष्ट करता है जो EDDTableFromAsciiService उस ASCII पाठ को उस सेवा द्वारा लौटा देगा जो डेटा के अंत को दर्शाता है।
    • <NoData> -- यदि EDDTableFromAsciiService इस पाठ को सेवा द्वारा लौटाए गए ASCII पाठ में पाता है, तो यह निष्कर्ष निकाला जाता है कि कोई डेटा नहीं है जो अनुरोध से मेल खाता है।

EDDTableFromAsciiService कंकाल XML

  <dataset type="EDDTableFromAsciiService..." datasetID\="..." active\="..." >
      <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
      <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
      <reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
      <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
      <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
      <addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
      <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
      <iso19115File>...</iso19115File> <!-- 0 or 1 -->
      <onChange>...</onChange> <!-- 0 or more -->
      <sourceUrl>...</sourceUrl>
      <beforeData1>...<beforeData1> <!-- 0 or 1 -->
      ...
      <beforeData10>...<beforeData10> <!-- 0 or 1 -->
      <afterData>...<afterData> <!-- 0 or 1 -->
      <noData>...<noData> <!-- 0 or 1 -->
      <addAttributes>...</addAttributes> <!-- 0 or 1 -->
      <dataVariable>...</dataVariable> <!-- 1 or more -->
  </dataset>

EDDTableFromAsciiServiceNOS

EDDTableFromAsciiServiceNOS ASCII टेक्स्ट डेटा सेवाओं से EDDTable डेटासेट बनाता है जो द्वारा पेश की जाती हैNOAA'राष्ट्रीय महासागर सेवा (NOS) । इस वर्ग के कार्यों और इसका उपयोग कैसे करें, इस वर्ग के सुपरक्लास को देखेंEDDTableFromAsciiService। यह संभावना नहीं है कि किसी अन्य व्यक्ति को इस उपश्रेणी का उपयोग करने की आवश्यकता होगी।

चूंकि एक NOS सेवा से प्रतिक्रिया के भीतर डेटा एक कॉलमर ASCII टेक्स्ट प्रारूप का उपयोग करता है, अक्षांश और देशांतर के अलावा अन्य डेटा चर में एक विशेष विशेषता होना चाहिए, जो निर्दिष्ट करता है कि प्रत्येक डेटा लाइन के कौन से पात्रों में उस चर का डेटा होता है, उदाहरण के लिए,

<att name="responseSubstring">17, 25</att>  

 

EDDTableFromAllDatasets

EDDTableFromAllDatasets एक उच्च स्तरीय डेटासेट है जिसमें अन्य सभी डेटासेटों के बारे में जानकारी है जो वर्तमान में आपके डेटा में लोड हो रहे हैं।ERDDAP। अन्य प्रकार के डेटासेट के विपरीत, इसके लिए कोई विनिर्देश नहीं हैallDatasetsडेटासेट मेंdatasets.xml।ERDDAP™स्वचालित रूप से एक EDDTableFromAllDatasets डेटासेट बनाता है (साथdatasetID=allDatasets) । इस प्रकार, एकallDatasetsप्रत्येक में डेटासेट बनाया जाएगाERDDAP™स्थापना और प्रत्येक में उसी तरह काम करेगाERDDAP™स्थापना।

The The most of theallDatasetsडेटासेट एक सारणीबद्ध डेटासेट है। इसमें प्रत्येक डेटासेट के लिए जानकारी की एक पंक्ति है। इसमें प्रत्येक डेटासेट के बारे में जानकारी वाले कॉलम हैं, उदाहरण के लिए,datasetID, सुलभ, संस्था, शीर्षक, minLongitude, maxLongitude, minLatitude, maxLatitude, minTime, maxTime, आदि। क्योंकिallDatasetsएक सारणीबद्ध डेटासेट है, आप इसे उसी तरह से क्वेरी कर सकते हैं जिसे आप किसी अन्य सारणीबद्ध डेटासेट को क्वेरी कर सकते हैं।ERDDAP™, और आप प्रतिक्रिया के लिए फ़ाइल प्रकार निर्दिष्ट कर सकते हैं। यह उपयोगकर्ताओं को बहुत शक्तिशाली तरीके से ब्याज के डेटासेट की तलाश करने देता है।  

EDDTableFromAsciiFiles

EDDTableFromAsciiFiles कॉमा-, टैब-, सेमीकोलॉन-, या स्पेस-सेपरेटेड सारणीबद्ध ASCII डेटा फ़ाइलों से डेटा एकत्र करता है।

  • अक्सर फ़ाइलों में पहली पंक्ति और दूसरी पंक्ति पर शुरू होने वाले डेटा पर कॉलम नाम होंगे। (यहां, फ़ाइल की पहली पंक्ति को पंक्ति संख्या 1 कहा जाता है।) लेकिन आप उपयोग कर सकते हैं<कॉलमNamesRow> और<FirstDataRowdatasets.xmlएक अलग पंक्ति संख्या निर्दिष्ट करने के लिए फ़ाइल।
  • ERDDAP™डेटा की पंक्तियों को विभिन्न संख्याओं के डेटा मानों की अनुमति देता है।ERDDAP™मान लीजिए कि लापता डेटा मान पंक्ति में अंतिम कॉलम हैं।ERDDAP™लापता डेटा मूल्यों के लिए मानक लापता मान मान मान निर्दिष्ट करता है। (जोड़ा गया v1.56)
  • ASCII फ़ाइलों के साथ काम करना आसान है, लेकिन वे डेटा को स्टोर / पुनर्प्राप्त करने का सबसे प्रभावी तरीका नहीं हैं। अधिक दक्षता के लिए, फ़ाइलों को बचाने के लिएNetCDFv3.ncफ़ाइलें (एक आयाम के साथ, "row", सभी चर द्वारा साझा) इसके बजाय। आप कर सकते हैंउपयोगERDDAP™नई फाइलें उत्पन्न करने के लिए
  • इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। ASCII फ़ाइलों में मेटाडाटा की कुल कमी के कारण, आपको हमेशा जेनरेटडाटासेटएक्सएमएल के परिणामों को संपादित करने की आवश्यकता होगी।
  • कब: कबERDDAP™ASCII डेटा फ़ाइलों को पढ़ता है, अगर यह किसी दिए गए लाइन पर त्रुटि पाता है (उदाहरण के लिए, वस्तुओं की गलत संख्या) यह एक चेतावनी संदेश लॉग करता है ("WARNING: खराब रेखा (s) डेटा की एक सूची के साथ) tolog.txt फ़ाइलऔर फिर बाकी डेटा फ़ाइल को पढ़ना जारी रखता है। इस प्रकार, समय-समय पर देखने की आपकी ज़िम्मेदारी है (या ऐसा करने के लिए एक स्क्रिप्ट लिखने) लॉग में उस संदेश के लिए। ताकि आप डेटा फ़ाइलों में समस्याओं को ठीक कर सकें।ERDDAP™इस तरह से सेट किया गया है ताकि उपयोगकर्ता सभी उपलब्ध वैध डेटा को पढ़ना जारी रख सकें, भले ही फ़ाइल की कुछ पंक्तियां त्रुटियां हों।  

EDDTableFrom AwsXmlFiles

EDDTableFrom AwsXmlFiles स्वचालित मौसम स्टेशन के एक सेट से डेटा एकत्र करता है (एडब्ल्यूएस) XML डेटा फ़ाइलों का उपयोग करके WeatherBug Rest XML API (जो अब सक्रिय नहीं है) ।

  • इस प्रकार की फ़ाइल डेटा को स्टोर करने का एक सरल लेकिन अक्षम तरीका है, क्योंकि प्रत्येक फ़ाइल में आमतौर पर सिर्फ एक बार बिंदु से अवलोकन होता है। इसलिए बड़ी संख्या में फाइलें हो सकती हैं। यदि आप प्रदर्शन में सुधार करना चाहते हैं, तो अवलोकनों के समूह को समेकित करने पर विचार करें (सप्ताह के लायक?) मेंNetCDFv3.ncफ़ाइलें (सबसे अच्छा:.ncफ़ाइलों के साथCF Discrete Sampling Geometries (DSG) Contiguous Ragged Array प्रारूप) उपयोगEDDTableFromMultidimNcFiles (याEDDTableFromNcCFFiles) डेटा की सेवा करने के लिए। आप कर सकते हैंउपयोगERDDAP™नई फाइलें उत्पन्न करने के लिए
  • इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।  

EDDTableFromColumnarAsciiFiles

EDDTableFromColumnarAsciiFiles निश्चित चौड़ाई वाले कॉलम के साथ सारणीबद्ध ASCII डेटा फ़ाइलों से डेटा एकत्र करता है।

  • अक्सर फ़ाइलों में पहली पंक्ति और दूसरी पंक्ति पर शुरू होने वाले डेटा पर कॉलम नाम होंगे। पहली पंक्ति / पंक्ति फाइल में पंक्ति #1 कहा जाता है। लेकिन आप उपयोग कर सकते हैं<कॉलमNamesRow> और<FirstDataRowdatasets.xmlएक अलग पंक्ति संख्या निर्दिष्ट करने के लिए फ़ाइल।

  • The The most of the<addAttributesप्रत्येक के लिए<dataVariableइन आंकड़ों के लिए MUST में इन दो विशेष विशेषताओं को शामिल किया गया है:

    • <att name=" startColumn"> पूर्णांक <Att> - प्रत्येक पंक्ति में वर्ण स्तंभ को निर्दिष्ट करता है जो इस डेटा चर की शुरुआत है।
    • <att name="stopColumn"> पूर्णांक <Att> - प्रत्येक पंक्ति में वर्ण स्तंभ को निर्दिष्ट करता है जो इस डेटा चर के अंत के बाद 1 है।

पहले अक्षर स्तंभ को स्तंभ #0 कहा जाता है। उदाहरण के लिए, इस फ़ाइल के लिए जो समय-समय पर तापमान मूल्यों को बढ़ाता है:

      0         1         2        <-- character column number 10's digit
0123456789012345678901234567 <-- character column number 1's digit
time temp
2014-12-01T12:00:00Z12.3
2014-12-02T12:00:00Z13.6
2014-12-03T12:00:00Z11.0

समय डेटा चर होगा

      <att name="startColumn">0<att>  
  <att name="stopColumn">20<att>

और समय डेटा चर होगा

      <att name="startColumn">20<att>  
  <att name="stopColumn">24<att>

इन विशेषताओं को छोड़कर सभी चरों के लिए निर्दिष्ट किया जाना चाहिएनिश्चित मूल्यऔरफ़ाइल-name-source-nameचर।

  • ASCII फ़ाइलों के साथ काम करना आसान है, लेकिन वे डेटा को स्टोर / पुनर्प्राप्त करने का एक कुशल तरीका नहीं हैं। अधिक दक्षता के लिए, फ़ाइलों को बचाने के लिएNetCDFv3.ncफ़ाइलें (एक आयाम के साथ, "row", सभी चर द्वारा साझा) इसके बजाय। आप कर सकते हैंउपयोगERDDAP™नई फाइलें उत्पन्न करने के लिए
  • इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। प्रत्येक डेटा कॉलम और ASCII फ़ाइलों में मेटाडाटा की कुल कमी के लिए शुरू और अंत पदों को निर्धारित करने में कठिनाई के कारण, आपको हमेशा जेनरेटडाटासेटएक्सएमएल से परिणाम संपादित करने की आवश्यकता होगी।  

EDDTableFromHttpGet

EDDTable FromHttpGet डेटासेट के अन्य सभी प्रकार से अलग हैERDDAP™इसमें एक प्रणाली है जिसके द्वारा विशिष्ट "लेखक" नियमित रूप से डेटासेट से डेटा को डेटा जोड़ने, डेटा को संशोधित करने या डेटा को हटा सकते हैं।HTTP GETयापोस्टकंप्यूटर प्रोग्राम, स्क्रिप्ट या ब्राउज़र से अनुरोध करता है। डेटासेट उपयोगकर्ताओं द्वारा समान रूप से क्वेरी करने योग्य है कि अन्य सभी EDDTable डेटासेट में क्वेरी करने योग्य हैं।ERDDAP। इस वर्ग के सुपरक्लास का वर्णन देखें,EDDTableFromFiles, उस सुपरक्लास से विरासत में मिली सुविधाओं के बारे में पढ़ने के लिए।

EDDTableFromHttpGet की अनूठी विशेषताओं को नीचे वर्णित किया गया है। आपको इस प्रारंभिक अनुभाग को पढ़ने की आवश्यकता है और इसे समझने की आवश्यकता है; अन्यथा, आपके पास अवास्तविक उम्मीदें हो सकती हैं या उन्हें ठीक करने में कठिनाई हो सकती हैं।

गहन उपयोग

इस प्रणाली का उद्देश्य निम्नलिखित है:

  • सारणी (सिट्टू में) डेटा, ग्रिड डेटा नहीं।
  • वास्तविक समय डेटा - लक्ष्य एक लेखक की अनुमति देना है (उदाहरण के लिए, सेंसर, एक स्वचालित क्यूसी स्क्रिप्ट, या एक विशिष्ट मानव) डेटासेट में बदलाव करने के लिए (एक.insert या .delete कमांड) और उस बदलाव को सुलभ बनानाERDDAP™उपयोगकर्ता, सभी 1 सेकंड से कम और संभवतः बहुत तेजी से। उस 1 सेकंड का अधिकांश नेटवर्क समय है।ERDDAP™लगभग 1 ms में अनुरोध को संसाधित कर सकते हैं और डेटा उपयोगकर्ताओं के लिए तुरंत सुलभ है। यह एक हैतेज,मजबूत, औरविश्वसनीय प्रणाली
  • लगभग किसी भी आवृत्ति - यह प्रणाली लगातार डेटा को स्वीकार कर सकती है (जैसे दैनिक) बहुत लगातार डेटा के माध्यम से (उदाहरण के लिए, 100 हर्ट्ज डेटा) । यदि आप सिस्टम को अनुकूलित करते हैं, तो यह उच्च आवृत्ति डेटा को संभाल सकता है (यदि आप चरम पर जाते हैं तो शायद 10 किलोहर्ट्ज़ डेटा) ।
  • एक सेंसर से डेटा या समान सेंसर का एक संग्रह।
  • संस्करण/Reproducible Science/DOIS -- जहां आपको डेटा में बदलाव करने में सक्षम होना चाहिए (उदाहरण के लिए, एक गुणवत्ता नियंत्रण ध्वज बदलें) यह जानने के लिए कि कौन से लेखक ने प्रत्येक बदलाव को बनाया है, जब लेखक ने परिवर्तन किया तो टाइमस्टैम्प को पता चलता है, और (अनुरोध पर) परिवर्तन करने से पहले मूल डेटा को देखने में सक्षम होना चाहिए। इस प्रकार, ये डेटासेट के लिए योग्य हैंDOIs। क्योंकि वे मिलते हैंDOIआवश्यकता यह है कि डेटासेट अलग होने के अलावा बदल रहा है। सामान्य तौर पर, वास्तविक समय डेटासेट के पास के लिए पात्र नहीं हैंDOIक्योंकि डेटा अक्सर retroactively बदल जाता है (उदाहरण के लिए, QA/QC प्रयोजनों के लिए) ।  

एक बार डेटा एक EDDTableFromHttpGet डेटासेट में होता है, किसी भी उपयोगकर्ता डेटा को उसी तरह से अनुरोध कर सकता है कि वे किसी अन्य EDDTable डेटासेट से डेटा का अनुरोध करते हैं।  

प्रयोगात्मक: सावधान रहें

चूंकि यह प्रणाली नई है और चूंकि खोए हुए पर्यावरणीय डेटा को प्राप्त नहीं किया जा सकता है, इसलिए आपको प्रयोगात्मक के रूप में EDDTableFromHttpGet का इलाज करना चाहिए। यदि आप किसी अन्य प्रणाली से संक्रमण कर रहे हैं, तो कृपया पुराने सिस्टम और नए सिस्टम को समानांतर में चलाएं जब तक कि आप आश्वस्त न हों कि नई प्रणाली अच्छी तरह से काम करती है। (सप्ताह या महीने, सिर्फ घंटे या दिन) । सभी मामलों में, कृपया सुनिश्चित करें कि आपका सिस्टम अलग-अलग .insert और .delete URL संग्रहीत करता है जो EDDTableFromHttpGet डेटासेट को भेजे जाते हैं। (यहां तक कि अगर सिर्फ अपाचे और / या टॉमकैट लॉग में) कम से कम थोड़ी देर के लिए। और सभी मामलों में, सुनिश्चित करें कि आपके EDDTableFromHttpGet डेटासेट द्वारा बनाई गई डेटा फ़ाइलों को नियमित रूप से बाह्य डेटा भंडारण उपकरणों तक बैकअप लिया जाता है। (ध्यान दें किहिन्दीEDDTableFromHttpGet द्वारा बनाई गई डेटा फ़ाइलों को बहुत कुशलतापूर्वक वापस कर सकते हैं।)
 

.insert और .delete

किसी भी डेटासेट के लिएERDDAP™जब आप एक अनुरोध भेजते हैंERDDAP™डेटासेट में डेटा की एक सबसेट के लिए, आप उस फ़ाइल प्रकार को निर्दिष्ट करते हैं जो आप प्रतिक्रिया के लिए चाहते हैं, उदाहरण के लिए, .csv,.htmlTable,.nc,.json। EDDTableFromHttp दो अतिरिक्त "फ़ाइल प्रकार" का समर्थन करने के लिए इस प्रणाली को बढ़ाता है जो सम्मिलित हो सकता है (या परिवर्तन) या डेटासेट में डेटा को हटा दें:

  • Insert
    • अनुरोध को एक मानक एचटीएमएल फॉर्म प्रतिक्रिया की तरह प्रारूपित किया गया है, जिसमें कुंजी = वैल्यू जोड़े, जिसे '&' से अलग किया गया है। उदाहरण के लिए, https://some.erddap.url/erddap/tabledap/myDataset**.insert**?stationID=46088&time=2016-03-30T12:37:55Z&latitude=10.1&longitude=-150.1&airTemp=17.23&waterTemp=12.3&author=JohnSmith\_someKey1
      कहनाERDDAP™डेटा को जोड़ने या बदलने के लिएstationIDनिर्दिष्ट समय के लिए =46088।
    • इस बदलाव का लेखक JohnSmith है और कुंजी कुछKey1 है।
    • URL में मान्य मान शामिल होना चाहिए (नहीं लापता मान) सभी के लिएhttpप्राप्त करना
    • यदि मूल्यhttpप्राप्त करना अनुरोध में भिन्नता (उदाहरण के लिएstationIDसमय) पहले से ही डेटासेट में एक पंक्ति पर मूल्यों से मेल खाते हैं, नए मूल्य प्रभावी ढंग से पुराने मूल्यों को ओवरराइट करते हैं (हालांकि पुराने मान अभी भी सुलभ हैं यदि उपयोगकर्ता पिछले डेटा का अनुरोध करता हैसंस्करणडेटासेट) ।
    • .insert URL कभी शामिल नहीं होना चाहिए & timestamp= (ERDDAP™वह मान उत्पन्न करता है) (in&command=) (जो .insert द्वारा निर्दिष्ट है (जो कमांड = 0 है) या .delete (कौन है? 1) ) ।
    • यदि .insert URL उन अन्य स्तंभों के मूल्यों को निर्दिष्ट नहीं करता है जो डेटासेट में हैं, तो उन्हें मूल लापता मान माना जाता है। (Integer डेटा प्रकार के लिए मैक्स \_VALUE, नावों और डबल्स के लिए NaN और स्ट्रिंग्स के लिए "") ।  
    • .delete
      • अनुरोध को एक मानक एचटीएमएल फॉर्म प्रतिक्रिया की तरह प्रारूपित किया गया है, जिसमें कुंजी = वैल्यू जोड़े, जिसे '&' से अलग किया गया है। उदाहरण के लिए, https://some.erddap.url/erddap/tabledap/myDataset**.delete**?stationID=46088&time=2016-03-30T12:37:55Z&author=JohnSmith\_someKey1
        कहनाERDDAP™डेटा को हटाने के लिएstationIDनिर्दिष्ट समय पर =46088।
      • इस बदलाव का लेखक JohnSmith है और कुंजी कुछKey1 है।
      • यूआरएल निर्दिष्ट करना चाहिएhttpप्राप्त करनाअनुरोध में (उदाहरण के लिएstationIDसमय) । यदि वे मान डेटासेट में पहले से ही पंक्ति पर मानों का मिलान करते हैं (जो आम तौर पर वे करेंगे) पुराने मूल्यों को प्रभावी ढंग से हटा दिया जाता है (हालांकि पुराने मान अभी भी सुलभ हैं अगर कोई उपयोगकर्ता पिछले डेटा का अनुरोध करता हैसंस्करणडेटासेट) ।
      • गैर-HttpGetRequiredVariables, लेखक के अलावा अन्य के लिए मूल्यों को निर्दिष्ट करने की कोई आवश्यकता नहीं है, जिसे अनुरोध को प्रमाणित करने की आवश्यकता है।  

विवरण:

  • .insert और .delete अनुरोधों को मानक एचटीएमएल फॉर्म प्रतिक्रियाओं की तरह प्रारूपित किया जाता है, कुंजी = वैल्यू जोड़े के साथ, जिसे '&' से अलग किया जाता है। मान होना चाहिएप्रतिशत encoded। इस प्रकार, आपको विशेष वर्णों को %HH के रूप में कोडित करने की आवश्यकता है, जहां HH चरित्र का 2 अंकीय हेक्साडेसिमल मान है। आमतौर पर, आपको बस कुछ punctuation अक्षरों को बदलने की आवश्यकता होती है: % में %25, और %26 में, "%22 में,<%3C में =%3D में>%3E में +%2B में,|%7C में\[%5B में\]%5D में,%20 में अंतरिक्ष, और # 127 से ऊपर के सभी पात्रों को अपने UTF-8 फॉर्म में परिवर्तित करें और फिर %HH प्रारूप में UTF-8 फॉर्म के प्रत्येक बाइट को कोडित करें। (मदद के लिए प्रोग्रामर से पूछें) ।
  • .insert और .delete अनुरोध शामिल होना चाहिएhttpप्राप्त करना, उदाहरण के लिए,stationIDसमय .insert अनुरोध के लिए, वेरिएबल जो अनुरोध में निर्दिष्ट नहीं हैं उन्हें लापता मान माना जाता है (Integer चर के लिए मैक्स \_VALUE, नाव और डबल चर के लिए NaN, और स्ट्रिंग चर के लिए एक खाली स्ट्रिंग) । अनुरोधों के लिए, गैर-HttpGetRequired के लिए मान चर (लेखक के अलावा, जो आवश्यक है) ध्यान दिया जाता है।
  • .insert और .delete अनुरोध प्रपत्र लेखक = में एक पैरामीटर के माध्यम से लेखक और लेखक की कुंजी का नाम शामिल होना चाहिए लेखक अनुरोध में अंतिम पैरामीटर के रूप में। यह सुनिश्चित करने के लिए कि पूरे अनुरोध को प्राप्त किया गया हैERDDAP। केवल लेखक (नहीं) डेटा फ़ाइल में संग्रहीत किया जाएगा। आपको अनुमति की सूची निर्दिष्ट करना होगा लेखक वैश्विक विशेषता के माध्यम सेhttpGetKeys
  • .insert और .delete मापदंडों स्केलर हो सकता है (एकल) फॉर्म में किसी भी लम्बाई के मान या सरणी\[value1, value2, value3,..., valueN\]। किसी दिए गए अनुरोध के लिए, सरणी के साथ सभी चर मूल्यों की समान संख्या के साथ सरणी होना चाहिए (यह एक त्रुटि है) । यदि किसी अनुरोध में स्केलर और सरणी मान हैं, तो स्केलर मान निर्दिष्ट सरणी के समान लंबाई के साथ सरणी बनने के लिए दोहराए जाते हैं, उदाहरण के लिए, औरstationID=46088 के रूप में इलाज किया जा सकता है &stationID=\[46088,46088,46088\]। Arrays के लिए कुंजी हैंउच्च throughput। सरणी के बिना, यह एक दूरस्थ लेखक से प्रति सेकंड 8 पंक्तियों से अधिक डेटा को निष्क्रिय या निष्क्रिय करने के लिए चुनौतीपूर्ण होगा। (नेटवर्क के सभी ओवरहेड के कारण) । सरणी के साथ, रिमोट सेंसर से प्रति सेकंड 1000 पंक्तियों से अधिक डेटा को निष्क्रिय करना या निष्क्रिय करना आसान होगा।
  • .insert और .delete स्वीकार करते हैं (त्रुटि संदेश के बिना) जब पूर्णांक की उम्मीद की जाती है तो फ्लोटिंग पॉइंट नंबर। इन मामलों में, डेटासेट मूल्यों को पूर्ण करने के लिए राउंड करता है।
  • .insert और .delete स्वीकार करते हैं (त्रुटि संदेश के बिना) पूर्णांक और अस्थायी बिंदु संख्या जो परिवर्तनीय के डेटा प्रकार की सीमा से बाहर हैं। इन मामलों में, डेटासेट मूल्यों को स्टोर करता है क्योंकिERDDAPउस डेटा प्रकार के लिए मूल लापता मान (integer प्रकार और नाव के लिए मैक्स \_VALUE फ्लोट्स और डबल्स के लिए) ।  

जवाब

यदि .insert या .delete URL सफल होता है, तो HTTP प्रतिक्रिया कोड 200 हो जाएगा। (ठीक) और जवाब एक साथ पाठ होगा.jsonवस्तु, जैसे,

    {
"status":"success",
"nRowsReceived":1,
"stringTimestamp":"2018-11-05T22:12:19.517Z",
"numericTimestamp":1.541455939517+E9
}

ध्यान दें कि टाइमस्टैम्प्स में मिलीसेकंड परिशुद्धता है।

यदि .insert या .delete URL विफल हो जाता है, तो आपको 200 से अधिक HTTP प्रतिक्रिया कोड मिलेगा (ओके) , उदाहरण के लिए, त्रुटि 403 अगर आप एक गलत लेखक \_key मान जमा करते हैं तो मना किया।ERDDAP™HTTP प्रतिक्रिया कोड भेजता है (नहीं, उदाहरण के लिए, a.jsonस्वरूपित त्रुटि) क्योंकि यह है कि इंटरनेट में चीजें कैसे की जाती हैं और क्योंकि त्रुटियां सिस्टम में कहीं भी हो सकती हैं (उदाहरण के लिए, नेटवर्क में, जो HTTP त्रुटि देता है) । यदि त्रुटि से हैERDDAP™, प्रतिक्रिया में कुछ पाठ शामिल हो सकते हैं (नहीं.json) एक विस्तृत स्पष्टीकरण के साथ जो गलत हो गया, लेकिन HTTP प्रतिक्रिया कोड (200=Okay, कुछ और परेशानी है) यह जांचने का उचित तरीका है कि क्या .insert या .delete सफल रहा है। यदि प्रतिक्रिया कोड की जांच संभव नहीं है या असुविधाजनक है, तो प्रतिक्रिया पाठ में "status": "success" की खोज करें, जिसे सफलता का विश्वसनीय संकेत होना चाहिए।

लॉग इन करें

जब EDDTableFromHttpGet को .insert और .delete कमांड प्राप्त होता है, तो यह केवल लॉग फ़ाइलों के एक सेट में प्रासंगिक फ़ाइल को जानकारी प्रदान करता है, जिनमें से प्रत्येक एक तालिका है जिसे एक तालिका में संग्रहीत किया जाता है।JSON लाइन्स CSV फ़ाइल। जब कोई उपयोगकर्ता डेटा के लिए अनुरोध करता है,ERDDAP™त्वरित रूप से प्रासंगिक लॉग फ़ाइलों को पढ़ता है, वे किए गए आदेश में डेटासेट में परिवर्तन लागू करता है, और फिर किसी अन्य की तरह उपयोगकर्ता के बाधाओं के माध्यम से अनुरोध को फ़िल्टर करता है।ERDDAP™डेटा अनुरोध। विभिन्न लॉग फ़ाइलों में डेटा का विभाजन, सूचना के विभिन्न टुकड़ों का भंडारण (उदाहरण के लिए, कमांड का टाइमस्टैम्प, और क्या कमांड .insert था या .delete था) डेटासेट के सेटअप के विभिन्न पहलुओं और सभी इसे संभव बनाते हैंERDDAPडेटा को स्टोर करने और इस डेटासेट से डेटा पुनर्प्राप्त करने के लिए बहुत जल्दी और बहुत कुशलतापूर्वक।  

सुरक्षा और लेखक

प्रत्येक .insert और .delete कमांड में शामिल होना चाहिए &लेखक = लेखक आखिरी पैरामीटर के रूप में, जहां लेखक \_key लेखक के पहचानकर्ता से बना है (आपने चुना: नाम, प्रारंभिक, छद्मनाम, संख्या) , एक अंडरस्कोर और एक गुप्त कुंजी। The The most of theERDDAP™व्यवस्थापक वैध लेखक \_key मानों की सूची उत्पन्न करने के लिए लेखकों के साथ काम करेगा, जिसे किसी भी समय बदला जा सकता है। जब EDDTableFromHttpGet को .insert या .delete कमांड प्राप्त होता है, तो यह सुनिश्चित करता है कि लेखकID \_key अंतिम पैरामीटर और मान्य है। क्योंकि यह अंतिम पैरामीटर है, यह इंगित करता है कि पूरी कमांड लाइन पहुंच गई हैERDDAP™नहीं था। गुप्त कुंजी यह सुनिश्चित करती है कि केवल विशिष्ट लेखक डेटासेट में डेटा को सम्मिलित या हटा सकते हैं।ERDDAP™फिर लेखक को निकालता है और उसे बचाता है कि लेखक चर में, ताकि कोई भी देख सके कि कौन डेटासेट में दिए गए बदलाव के लिए जिम्मेदार था। .insert और .delete कमांड केवल के माध्यम से किया जा सकता हैhttps: (सुरक्षित) ERDDAP™यूआरएल यह सुनिश्चित करता है कि पारगमन के दौरान हस्तांतरित की जा रही जानकारी को गुप्त रखा गया है।  

टाइमस्टैम्प

लॉग सिस्टम के हिस्से के रूप में, EDDTableFromHttpGet एक टाइमस्टैम्प जोड़ता है (उस समयERDDAPअनुरोध प्राप्त) प्रत्येक आदेश के लिए यह लॉग फ़ाइलों में स्टोर करता है। क्योंकिERDDAP™टाइमस्टैम्प उत्पन्न करता है, लेखक नहीं, इससे कोई फर्क नहीं पड़ता कि अलग-अलग लेखक घड़ी के साथ कंप्यूटर से बदलाव कर रहे हैं, जो थोड़े अलग-अलग समय तक निर्धारित होते हैं। टाइमस्टैम्प निश्चित रूप से उस समय को इंगित करता है जब डेटासेट में बदलाव किया गया था।  

HTTP POST

  • क्या HTTP POST के बारे में?
    HTTPपोस्ट बेहतर विकल्प है (तुलनाHTTP GET) किसी क्लाइंट से HTTP सर्वर तक जानकारी भेजने के लिए। यदि आप कर सकते हैं, या यदि आप वास्तव में सुरक्षा में सुधार करना चाहते हैं, तो जानकारी भेजने के बजाय POST का उपयोग करें।ERDDAP। POST अधिक सुरक्षित है क्योंकि: GET के साथ औरhttpsयूआरएल को सुरक्षित तरीके से प्रेषित किया जाता है, लेकिन पूरे यूआरएल को सुरक्षित तरीके से प्रसारित किया जाता है। (पैरामीटर सहित, लेखक \_key सहित) अपाचे, टॉमकैट को लिखा जाएगा, औरERDDAP™लॉग फाइलें, जहां कोई उन्हें पढ़ सकता है अगर फाइलें ठीक से सुरक्षित नहीं हैं। POST के साथ, मापदंडों को सुरक्षित तरीके से प्रेषित किया जाता है और लॉग फ़ाइलों को नहीं लिखा जाता है। POST क्लाइंट्स के साथ काम करने के लिए थोड़ा कठिन है और क्लाइंट सॉफ्टवेयर द्वारा व्यापक रूप से समर्थन नहीं किया गया है, लेकिन प्रोग्रामिंग भाषाएं इसका समर्थन करती हैं। जिस सामग्री को आप GET या POST के माध्यम से डेटासेट में भेजते हैं, वही होगा, सिर्फ एक अलग तरीके से स्वरूपित।  

httpप्राप्त करना वैरिएबल्स ग्लोबल एटट्रिब्यू

इस पूरे सिस्टम को बनाने का एक अनिवार्य हिस्सा आवश्यक वैश्विक विशेषता हैhttpप्राप्त करना वैरिएबल्स, जो कि अल्पसंख्यक सूची हैdataVariableस्रोत नाम जो विशिष्ट रूप से डेटा की एक पंक्ति की पहचान करते हैं। यह संभव के रूप में कम से कम होना चाहिए और लगभग हमेशा समय चर शामिल होगा। उदाहरण के लिए, यहां सिफारिश की गई हैhttpप्राप्त करना प्रत्येक के लिए चरCF Discrete Sampling Geometries (DSG) (बेशक, आईडी नाम आपके डेटासेट में अलग हो सकता है।) :

  • टाइम सीरीज़ के लिए:stationID, समय

  • ट्रेजेक्टरी के लिए: ट्रेजेक्टरीआईडी, समय

  • प्रोफ़ाइल के लिए: समय (assuming time is the प्रोफ़ाइल \_id) गहराई

  • TimeSeries के लिए प्रोफ़ाइल:stationID, समय (assuming time is the प्रोफ़ाइल \_id) गहराई

  • ट्रेजेक्टरी प्रोफ़ाइल: trajectoryID, समय (assuming time is the प्रोफ़ाइल \_id) गहराई

टाइमसीरीज़ को एक उदाहरण के रूप में लेना: एक .insert कमांड को देखते हुए जिसमें शामिल हैंstationID= 46088 और समय = 2016-06-23T19:53:00Z (अन्य चर के लिए और अन्य मूल्यों) :

  • यदि उस स्टेशन के लिए कोई मौजूदा डेटा नहीं है और उस समय, तो प्रभाव डेटासेट में डेटा जोड़ने के लिए होगा।
  • यदि उस स्टेशन के लिए मौजूदा डेटा मौजूद है और उस समय, तो प्रभाव इस नए डेटा के साथ डेटा की मौजूदा पंक्ति को प्रतिस्थापित करना होगा। (बेशक, चूंकिERDDAP™प्रत्येक आदेश का लॉग इसे प्राप्त करता है, पुराने डेटा अभी भी लॉग में है। यदि कोई उपयोगकर्ता इस परिवर्तन से पहले डेटासेट के संस्करण से डेटा का अनुरोध करता है, तो वे पुराने डेटा देखेंगे।)
     

httpGetDirectoryStructure

  • httpGetDirectory संरचना वैश्विक विशेषता और डेटा (लॉग इन) फ़ाइल का नाम
    इस पूरे सिस्टम को कुशलतापूर्वक बनाने का हिस्सा यह है किERDDAP™डेटा का एक सेट बनाता है (लॉग इन) प्रत्येक डेटासेट का एक अलग हिस्सा है। अगर ये अच्छी तरह से सेट हो जाते हैं,ERDDAP™डेटा के लिए अधिकांश अनुरोधों को जल्दी से जवाब देने में सक्षम होगा। इस सेटअप द्वारा निर्दिष्ट हैhttpGetDirectoryStructure वैश्विक विशेषता, जो एक स्ट्रिंग है जो एक सापेक्ष फ़ाइल नाम की तरह दिखता है, उदाहरण के लिए, "stationID/ 10years", लेकिन वास्तव में निर्देशिका संरचना के लिए एक विनिर्देश है। इसके कुछ हिस्सों से संकेत मिलता है कि डेटा के लिए निर्देशिका और फ़ाइल नाम कैसे दिया जाए (लॉग इन) फ़ाइलों का निर्माण किया जाएगा।

    • अगर कोई हिस्सा एक पूर्णांक है (>= 1) साथ ही एक समय पेरियोड (मिलीसेकंड, दूसरा, मिनट, घंटे, तारीख, महीना, वर्ष, या उनके बहुवचन) , उदाहरण के लिए, 10years, फिर EDDTableFromHttpGet डेटासेट डेटा की पंक्ति के लिए समय मान लेंगे (उदाहरण के लिए, 2016-06-23T19:53:00Z) उस समय की गणना करें जो उस परिशुद्धता के लिए truncated है (उदाहरण के लिए, 2010) , और उस से एक फ़ोल्डर या फ़ाइल नाम बनाएं।

लक्ष्य प्रत्येक फ़ाइल में डेटा का एक उचित रूप से बड़ा हिस्सा प्राप्त करना है, लेकिन 2GB से भी कम है।

  • अन्यथा, विनिर्देश का हिस्सा होना चाहिएdataVariable'sourceName, उदाहरण के लिए,stationID। इस मामले में, EDDTableFromHttpGet डेटा की नई पंक्ति के लिए उस परिवर्तनीय के मूल्य से एक फ़ोल्डर या फ़ाइल नाम बना देगा (उदाहरण के लिए, "46088") ।

चूंकि .insert और .delete कमांड डेटा विशिष्ट डेटा में संग्रहीत किया जाता है (लॉग इन) फ़ाइलों, EDDTableFromHttpGet आम तौर पर केवल एक या कुछ डेटा खोलने की जरूरत है (लॉग इन) किसी दिए गए उपयोगकर्ता अनुरोध के लिए डेटा ढूंढने के लिए फाइलें। क्योंकि प्रत्येक डेटा (लॉग इन) फ़ाइल में डेटासेट के अपने हिस्से के लिए सभी प्रासंगिक जानकारी है, यह EDDTableFromHttpGet के लिए एक विशिष्ट संस्करण बनाने के लिए तेज़ और आसान है। (या वर्तमान संस्करण) उस फ़ाइल में डेटासेट के लिए डेटासेट (और पूरे डेटासेट के अनुरोधित संस्करण को उत्पन्न नहीं करना चाहिए) ।

सामान्य दिशानिर्देश डेटा की मात्रा और आवृत्ति पर आधारित हैं। यदि हम डेटा की प्रति पंक्ति 100 bytes मानते हैं, तो ...

    | Frequency  <br>of measurements | Recommended  <br>httpGetDirectoryStructure |
| --- | --- |
| \\>=1 per second | *featureID*/1year/1day |
| \\>=1 per minute | *featureID*/2months |
| \\>=1 per hour | *featureID*/10years |
| \\>=1 per day | *featureID* |

उदाहरण के लिए, यदि निर्देशिका संरचना हैstationID/2माह और आप दो स्टेशनों से डेटा डालने (46088 और 46155) दिसंबर 2015 से मई 2016 तक समय मान के साथ, EDDTableFromHttp 46088 और 46155 नामक निर्देशिकाओं का निर्माण करेगा और प्रत्येक नामित 2015-11 में फ़ाइलों का निर्माण करेगा।.jsonl, 2016-01.jsonl, 2016-03.jsonएल, 2016-05.jsonएल (प्रत्येक प्रासंगिक स्टेशन के लिए डेटा के 2 महीने का मूल्य रखता है) । भविष्य में किसी भी समय, यदि आप डेटा को बदलने या हटाने के लिए .insert या .delete का उपयोग करते हैं, उदाहरण के लिए, 2016-04-05T14:45:00Z पर स्टेशन 46088, EDDTableFromHttp उस कमांड को 46088/2016-03 तक भेजेगा.jsonएल, प्रासंगिक डेटा (लॉग इन) फ़ाइल और स्पष्ट रूप से, भविष्य में किसी भी समय अन्य स्टेशनों के लिए डेटा जोड़ना ठीक है, क्योंकि डेटासेट केवल नए स्टेशनों से डेटा रखने की आवश्यकता के रूप में अतिरिक्त निर्देशिकाओं का निर्माण करेगा।

httpGetKeys

प्रत्येक EDDTable FromHttp डेटासेट के पास वैश्विक विशेषता होना चाहिएhttpGetKeys जो अनुमति प्राप्त लेखकों और उनके गुप्त कुंजी की सूची को एक अल्पविराम से अलग सूची के रूप में निर्दिष्ट करता है लेखक , उदाहरण के लिए, JohnSmith \_someKey1, HOBOLogger \_someKey2, QCScript59 \_someKey3।

  • लेखक \_key's case-संवेदनशील होते हैं और पूरी तरह से ASCII वर्ण (#33 - #126) होना चाहिए, और बिना किसी वस्तु के, "या पात्र
  • कुंजी पासवर्ड की तरह हैं, इसलिए वे MUST होना चाहिए >=8 वर्ण, अनुमान लगाना मुश्किल है, और आंतरिक शब्दकोश शब्दों के बिना। जैसा कि आप पासवर्ड का इलाज करेंगे - उन्हें निजी रखें।
  • पहला '' चरित्र कुंजी से लेखक को अलग करता है, इसलिए लेखक का नाम '' चरित्र शामिल नहीं किया जा सकता है। (लेकिन एक कुंजी कर सकते हैं) ।
  • किसी भी लेखक के पास एक या अधिक लेखक हो सकता है \key, उदाहरण के लिए, JohnSmith \_some Key1, JohnSmith \_some कुंजी 7, आदि
  • आप किसी भी समय इस विशेषता का मान बदल सकते हैं। परिवर्तन अगली बार डेटासेट लोड होने पर प्रभाव डालते हैं।
  • इस जानकारी को डेटासेट के वैश्विक एट्रिब्यूट्स से हटा दिया जाएगा इससे पहले कि इसे सार्वजनिक कर दिया गया है।
  • डेटासेट को डालने या हटाने के लिए प्रत्येक अनुरोध में एक &लेखक = शामिल होना चाहिए लेखक पैरामीटर कुंजी की वैधता को सत्यापित करने के बाद,ERDDAP™केवल लेखक को बचाता है (नहीं) डेटा फ़ाइल में।

सेट अप

यहां एक EDDTableFromHttpGet डेटासेट स्थापित करने के लिए अनुशंसित कदम हैं:

  1. इस डेटासेट के डेटा को रखने के लिए मुख्य निर्देशिका बनाएं। इस उदाहरण के लिए, Let's use /data/testGet/. उपयोगकर्ता चल रहा है GenerateDatasetsXml और उपयोगकर्ता चल रहा हैERDDAP™दोनों ही इस निर्देशिका के लिए पढ़ने लिखने का उपयोग करना चाहिए।  

  2. एक नमूना बनाने के लिए एक पाठ संपादक का उपयोग करें.jsonएक्सटेंशन के साथ CSV फ़ाइल.jsonउस निर्देशिका में l नाम महत्वपूर्ण नहीं है। उदाहरण के लिए, आप इसे नमूना कह सकते हैं.jsonएल 2 पंक्तियां बनाएं.jsonl CSV फ़ाइल, पहली पंक्ति और dummy/typical मान पर कॉलम नामों के साथ (सही डेटा प्रकार का) दूसरी पंक्ति में। यहाँ एक नमूना फ़ाइल है जो एक संग्रह के लिए उपयुक्त हैfeatureType= TimeSeries डेटा जो हवा और पानी के तापमान को मापा जाता है। \[के लिएfeatureType= ट्रेजेक्टरी, आप बदल सकते हैंstationIDto be trajectoryid.\]
    \[के लिएfeatureType= प्रोफाइल, आप बदल सकते हैंstationIDप्रोफ़ाइल आईडी होना और एक गहराई परिवर्तनीय जोड़ने के लिए।\]

    \["stationID","time", " अक्षांश", "longitude", "airTemp", "waterTemp", "timestamp", "लेखक", "command"\] \["myStation", "2018-06-25T17:00Z", 0.0, 0.0, 0.0, 0.0, 0.0, "SomeBody", 0\]

ध्यान दें:

  • वास्तविक डेटा मान कोई फर्क नहीं पड़ता क्योंकि आप अंततः इस फ़ाइल को हटा देंगे, लेकिन उन्हें सही डेटा प्रकार का होना चाहिए। विशेष रूप से, समय चर उसी प्रारूप का उपयोग करना चाहिए जो स्रोत से वास्तविक डेटा का उपयोग करेगा।
  • सभी चरों के लिए,sourceNameबराबर होगाdestinationNameइसलिए उस जानकारी के साथ चर होने पर समय, अक्षांश, देशांतर और कभी-कभी गहराई या ऊंचाई सहित सही / अंतिम परिवर्तनीय नामों का उपयोग करें।
  • लगभग हमेशा एक चर नाम का समय होगा जो अवलोकन के समय को रिकॉर्ड करता है। यह डेटाटाइप स्ट्रिंग के साथ हो सकता हैस्ट्रिंग समय के लिए उपयुक्त इकाइयों (उदाहरण के लिएyyyy-MM-dd'T'H:mm:ss.SSSZ) डेटा टाइप डबल के साथसंख्यात्मक समय के लिए उपयुक्त इकाइयों (उदाहरण के लिए, 1970-01-01T00:00:00Z के बाद से सेकंड, या कुछ अन्य आधार समय) ।
  • तीन स्तंभ (आमतौर पर अंतिम तीन) टाइमस्टैम्प, लेखक, कमांड होना चाहिए।
  • टाइमस्टैम्प कॉलम का उपयोग EDDTableFromHttpGet द्वारा एक टाइमस्टैम्प जोड़ने के लिए किया जाएगा, यह दर्शाता है कि डेटा फ़ाइल में डेटा की एक दी गई लाइन को जोड़ा गया है। इसमें 1970-01-01T00:00:00Z के बाद से डेटाटाइप डबल और यूनिट सेकंड होंगे।
  • डेटाटाइप स्ट्रिंग के साथ लेखक कॉलम का उपयोग रिकॉर्ड करने के लिए किया जाएगा जो अधिकृत लेखक ने इस लाइन के डेटा को प्रदान किया। अधिकृत लेखकों द्वारा निर्दिष्ट कर रहे हैंhttpGetKeys वैश्विक विशेषता। हालांकि कुंजी को निर्दिष्ट किया गया है लेखक और उस रूप में "request" URL में हैं, केवल लेखक का हिस्सा डेटा फ़ाइल में बचाया जाता है।
  • डेटाटाइप बाइट के साथ कमांड कॉलम इंगित करेगा कि इस लाइन पर डेटा एक सम्मिलन है या नहीं। (0) या हटाने (1) ।  
  1. रन जेनरेटडाटासेट एक्सएमएल और इसे बताओ

    1. डेटासेट प्रकार EDDTableFromHttpGet है
    2. निर्देशिका है (इस उदाहरण के लिए) /data / test प्राप्त करें
    3. नमूना फ़ाइल है (इस उदाहरण के लिए) /data / testGet / स्टार्टअप.jsonएल
    4. The The most of thehttpप्राप्त करना चर (इस उदाहरण के लिए) stationIDसमय विवरण देखेंhttpप्राप्त करनानीचे।
    5. यदि डेटा हर 5 मिनट में एकत्र होता है, तो डेटा हर 5 मिनट में एकत्र होता है।httpइस उदाहरण के लिए GetDirectoryStructure हैstationID/2 महीना। विवरण देखेंhttpGetDirectoryStructureनीचे।
    6. The The most of thehttpGetKeys

आउटपुट जोड़ें (का हिस्साdatasets.xmlडेटासेट के लिए) todatasets.xml।   4. संपादित करेंdatasets.xmlइस डेटासेट के लिए यह सही और पूरा करने के लिए भाग लें। विशेष रूप से, सभी को बदलें सही सामग्री के साथ।   5. के लिए<फ़ाइलTableInMemory> सेटिंग:

  • इसे सच करने के लिए सेट करें यदि डेटासेट आमतौर पर लगातार .insert और/or .delete अनुरोध प्राप्त करेगा। (उदाहरण के लिए, अक्सर हर 10 सेकंड में एक बार से अधिक बार) । यह EDDTableFromHttpGet की मदद करता है। यदि आप इसे सच करने के लिए सेट करते हैं, तो EDDTableFromHttpGet अभी भी फ़ाइल को सहेज देगा समय-समय पर डिस्क से संबंधित जानकारी (आवश्यकता के रूप में, लगभग हर 5 सेकंड) ।
  • इसे गलत तरीके से सेट करें (डिफ़ॉल्ट) यदि डेटासेट आमतौर पर गलत हो जाएगा। (उदाहरण के लिए, हर 10 सेकंड में एक बार से कम) ।  
  1. ध्यान दें: उपयोग करना संभव है<कैशFromUrl> और संबंधित सेटिंग्स मेंdatasets.xmlEDDTable FromHttp किसी अन्य पर दूरस्थ EDDTableFromHttpGet डेटासेट की स्थानीय प्रतिलिपि बनाने और बनाए रखने के तरीके के रूप में डेटासेट प्राप्त करेंERDDAP। हालांकि, इस मामले में, यह स्थानीय डेटासेट किसी भी .insert और .delete अनुरोध को अस्वीकार करेगा।

EDDTable FromHttpGet Dataset

  • लेखक "request" बना सकते हैं जोडेटासेट से डेटा को कन्वर्ट या हटा दें।  
  • डेटासेट में वास्तविक डेटा डालने के बाद, आप मूल नमूना डेटा फ़ाइल को हटा सकते हैं और हटा सकते हैं।  
  • उपयोगकर्ता डेटासेट से डेटा का अनुरोध कर सकते हैं क्योंकि वे किसी अन्य EDDTable डेटासेट के लिए करते हैंERDDAP। यदि अनुरोध में टाइमस्टैम्प कॉलम पर एक बाधा शामिल नहीं है, तो अनुरोध डेटासेट के वर्तमान संस्करण से डेटा प्राप्त करता है (सभी सम्मिलन और हटाने के आदेशों को संसाधित करने के बाद लॉग फ़ाइल और फिर से वर्गीकरण द्वाराhttpप्राप्त करना) ।  
  • उपयोगकर्ता उन अनुरोधों को भी बना सकते हैं जो EDDTableFromHttpGet डेटासेट के लिए विशिष्ट हैं:
    • यदि अनुरोध में शामिल है<या<= टाइमस्टैम्प कॉलम की बाधा, फिरERDDAP™निर्दिष्ट टाइमस्टैम्प तक लॉग फ़ाइल की पंक्तियों को संसाधित करता है। प्रभाव में, यह अस्थायी रूप से उस समय के बाद से डेटासेट में किए गए सभी परिवर्तनों को हटा देता है। अधिक जानकारी के लिए, देखेंसंस्करण
    • यदि अनुरोध में एक>,>=, या = टाइमस्टैम्प कॉलम की बाधा, उदाहरण के लिए, और टाइमस्टैम्प शामिल हैं।<=0, फिरERDDAP™डेटा फ़ाइलों से डेटा लौटाता है, बिना प्रविष्टि और हटाने के आदेश को संसाधित किए।
  • भविष्य में, हम मानते हैं कि उपकरण बनाया जाएगा (हमारे द्वारा? आपके द्वारा?) इन डेटासेट के साथ काम करने के लिए। उदाहरण के लिए, एक स्क्रिप्ट हो सकती है जो कच्चे लॉग फ़ाइलों को पढ़ती है, एक अलग अंशांकन समीकरण लागू करती है, और उस व्युत्पन्न जानकारी के साथ एक अलग डेटासेट उत्पन्न करती है। ध्यान दें कि स्क्रिप्ट को एक अनुरोध के माध्यम से मूल डेटा प्राप्त हो सकता हैERDDAP™ (जो फ़ाइल प्रारूप में डेटा प्राप्त करता है जो स्क्रिप्ट के साथ काम करने के लिए सबसे आसान है) और नए डेटासेट को .insert "request" के माध्यम से उत्पन्न / अद्यतन करने के लिएERDDAP। स्क्रिप्ट को डेटा फ़ाइलों तक सीधी पहुंच की आवश्यकता नहीं है; यह किसी भी अधिकृत लेखक के कंप्यूटर पर हो सकता है।  

EDDTableFromHttpGet

विषय हैं:

यहाँ विस्तृत जानकारी है:

सेटअप को नहीं बदला!

एक बार डेटासेट बनाया गया है और आपने इसमें डेटा जोड़ा है:

  • नहीं जोड़ना या हटानाdataVariableS.
  • नहीं बदलाsourceNameयाdestinationName(d)dataVariableS.
  • डेटा को नहीं बदल सकता का प्रकारdataVariableS. लेकिन आप बदल सकते हैंdataVariableमेटाडाटा
  • नहीं बदलाhttpप्राप्त करना वैरिएबल्स वैश्विक विशेषता।
  • नहीं बदलाhttpGetDirectoryStructure वैश्विक विशेषता.

यदि आपको इन चीजों में से किसी को बदलने की आवश्यकता है, तो एक नया डेटासेट करें और सभी डेटा को नए डेटासेट में स्थानांतरित करें।  

CRUD

कंप्यूटर विज्ञान में, डेटासेट के साथ काम करने के लिए चार मूलभूत आदेश हैंCREATE, READ, UPDATE, DELETE (CRUD) । SQL, संबंधिक डेटाबेस के साथ काम करने की भाषा, INSERT, SELECT, UPDATE और DELETE में बराबर है। EDDTableFromHttpGet

  • Insert CREATE और UPDATE का एक संयोजन है।
  • .delete DELETE है।
  • डेटा के सबसेट के अनुरोध के लिए नियमित प्रणाली READ है।

इस प्रकार, EDDTableFromHttpGet डेटासेट के साथ काम करने के लिए सभी बुनियादी आदेशों का समर्थन करता है।  

  • .insert या .delete अनुरोध बिना त्रुटियों के HTTP स्टेटस कोड = 200 और एक JSON ऑब्जेक्ट लौटा देगा, उदाहरण के लिए,
    {
"status":"success",
"nRowsReceived":1,
"stringTimestamp":"2018-03-26T15:34:05.552Z",
"numericTimestamp":1.522078445552E9
}

दो टाइमस्टैम्प मान उसी मिलीसेकंड को संदर्भित करते हैं, जो मिलीसेकंड है जो डेटा की पंक्तियों के लिए टाइमस्टैम्प चर में संग्रहीत किया जाएगा जो डाला गया था या हटा दिया गया था।ERDDAP™भविष्य में इन प्रमुख मूल्य जोड़ों के नाम और स्वरूपण को नहीं बदलेगा।ERDDAP™भविष्य में JSON ऑब्जेक्ट में अतिरिक्त कुंजी-मूल्य जोड़े जोड़ सकते हैं।  

InvalidRequests

Invalid .insert या .delete अनुरोध स्टेटस = 200 के अलावा एक HTTP त्रुटि स्टेटस कोड वापस कर देगा और डेटासेट में कोई बदलाव नहीं किया जाएगा। इसमें गलत लेखक की जानकारी, गलत परिवर्तनीय नाम, विभिन्न चरों के लिए अलग-अलग सरणी लंबाई, लापता आवश्यक चर, लापता आवश्यक चर मान आदि के साथ अनुरोध शामिल हैं। यदि अनुरोध में एक से अधिक डेटा फ़ाइल शामिल है, तो यह संभव है कि अनुरोध का हिस्सा सफल हो जाएगा और भाग विफल हो जाएगा। हालांकि यह एक समस्या नहीं होनी चाहिए अगर सेंसर अनुरोध भेजने से पूर्ण विफलता के रूप में किसी भी विफलता का इलाज होता है। उदाहरण के लिए, यदि आप बताते हैंERDDAP™डालने के लिए (या हटाना) एक पंक्ति में दो बार एक ही डेटा, सबसे खराब मामला यह है कि सूचना दो बार संग्रहीत की जाती है, लॉग फ़ाइल में एक साथ बंद होती है। यह देखना मुश्किल है कि कैसे वह परेशानी पैदा कर सकता है।  

HttpGet स्पीड

.insert या .delete अनुरोध के लिए (गिनती नहींhttpओवरहेड) , बॉलपार्क .insert या .delete की गति है डेटा की 1 पंक्ति के साथ 1ms प्रति .insert सरणी में डेटा की 10 पंक्तियों के साथ प्रति .insert 2ms (\[\])
सरणी में डेटा की 100 पंक्तियों के साथ प्रति .insert 3ms (\[\])
सरणी में डेटा की 1000 पंक्तियों के साथ प्रति .insert 13ms (\[\])
स्पष्ट रूप से सरणी के लिए कुंजी हैंउच्च throughput। सरणी के बिना, यह एक दूरस्थ लेखक से प्रति सेकंड 8 पंक्तियों से अधिक डेटा को निष्क्रिय या निष्क्रिय करने के लिए चुनौतीपूर्ण होगा। (नेटवर्क के सभी ओवरहेड के कारण) । सरणी के साथ, रिमोट सेंसर से प्रति सेकंड 1000 पंक्तियों से अधिक डेटा को निष्क्रिय करना या निष्क्रिय करना आसान होगा।

प्रति अनुरोध बहुत बड़ी मात्रा में डेटा के साथ, आप अधिकतम क्वेरी लंबाई तक टॉमकैट की सीमा को हिट करेंगे (डिफ़ॉल्ट 8KB है?) , लेकिन इसे अपने में अधिकतम HttpHeaderSize सेटिंग को संपादित करके बढ़ाया जा सकता है tomcat /conf /server.xml का HTTP / 1.1 कनेक्टर प्रविष्टि

कबERDDAP™JSON लाइन्स CSV डेटा पढ़ता है (लॉग इन) फाइलें, द्विआधारी डेटा फ़ाइलों को पढ़ने की तुलना में एक छोटा समय दंड है। हमने महसूस किया कि जब रीडिंग डेटा लिखते समय सिस्टम की गति और मजबूती के लिए भुगतान करने की उचित कीमत थी तो इस समय जुर्माना लगाया गया था। (जो प्राथमिक महत्व का है) ।

एसएसडी

अधिक गति के लिए,उपयोग करनासॉलिड स्टेट ड्राइव (एसएसडी) डेटा को स्टोर करने के लिए। उनके पास बहुत तेज़ फाइल एक्सेस टाइम है ()<हार्ड डिस्क ड्राइव की तुलना में 0.1ms) (3 - 12 ms) । उनके पास एक तेज़ डेटा ट्रांसफर दर भी है (200 - 2500 MB/s) हार्ड डिस्क ड्राइव से (~200 MB/s) । हाल के वर्षों में उनकी लागत काफी कम हो गई है। हालांकि पहले SSD के पास बड़ी संख्या में लिखने के बाद किसी दिए गए ब्लॉक में समस्या थी, लेकिन यह समस्या अब बहुत कम हो गई है। यदि आप एक बार डेटा लिखने के लिए एसएसडी का उपयोग करते हैं तो इसे कई बार पढ़ा जाए, यहां तक कि एक उपभोक्ता-ग्रेड एसएसडी (जो एंटरप्राइज़-ग्रेड एसएसडी की तुलना में काफी कम महंगा है) लंबे समय तक रहना चाहिए।

रोबस्ट

हमने इस प्रणाली को आसानी से काम करने और जितना संभव हो उतना मजबूत बनाने की कोशिश की है।

  • प्रणाली को कई धागे बनाने के लिए डिज़ाइन किया गया है (उदाहरण के लिए, सेंसर, एक स्वचालित क्यूसी स्क्रिप्ट और एक मानव) एक ही डेटासेट और यहां तक कि एक ही फ़ाइल पर काम करते हैं। इसमें से अधिकांश डेटा को संग्रहीत करने और एक बहुत ही सरल फ़ाइल प्रकार का उपयोग करके लॉग फ़ाइल दृष्टिकोण का उपयोग करके संभव बनाया गया है।JSON लाइन्स CSV फ़ाइलोंडेटा को स्टोर करने के लिए।
  • JSON लाइन्स CSV के लिए एक और बड़ा लाभ यह है कि यदि कोई फ़ाइल कभी भ्रष्ट हो जाती है (उदाहरण के लिए, एक लाइन पर त्रुटि के कारण अमान्य) फ़ाइल को टेक्स्ट एडिटर में खोलना आसान है और समस्या को ठीक करना आसान है।
  • एक अन्य लाभ यह है कि यदि किसी फ़ाइल में एक लाइन पर कोई त्रुटि है, तो सिस्टम अभी भी त्रुटि लाइन से पहले और बाद में सभी डेटा को लाइनों पर पढ़ा सकता है। और सिस्टम अभी भी अतिरिक्त .insert और .delete जानकारी लॉग इन कर सकते हैं।
  • एडमिन-सहायक मानक फ़ाइलों का उपयोग करने का एक बड़ा लाभ (एक संबंधिक डेटाबेस या Cassandra या अन्य सॉफ्टवेयर की तुलना में) : कोई अन्य सॉफ्टवेयर नहीं है जिसे बनाए रखा जाना है और जो डेटा को स्टोर करने या पुनर्प्राप्त करने के लिए चल रहा है। और किसी भी समय मानक फ़ाइलों को वापस करना आसान है और एक वृद्धिशील तरीके से क्योंकि डेटा चंक में है। (थोड़ी देर के बाद, प्रत्येक स्टेशन के लिए केवल वर्तमान समय की फ़ाइल बदल जाएगी) । इसके विपरीत, डेटाबेस से और Cassandra से बाहरी बैकअप फ़ाइलों को बनाने के लिए यह काफी प्रयास और सिस्टम डाउन टाइम लेता है।  
सिस्टम विश्वसनीयता

एक सर्वर के साथ उम्मीद करना उचित हैERDDAP™99.9% अपटाइम - यह प्रति वर्ष लगभग 9 घंटे का डाउनटाइम है (हालांकि, आप एक बुरी रात में इसका उपयोग कर सकते हैं!) । यदि आप मेहनती और भाग्यशाली हैं, तो आपको 99.99% अपटाइम मिल सकता है (प्रति वर्ष 53 मिनट) चूंकि अद्यतन के लिए कुछ ही पुनरारंभ होता है, इसलिए उस समय बहुत कुछ होगा। आपको चरम उपाय करना होगा (एक अलग बैकअप सर्वर, निर्बाध बिजली की आपूर्ति, बैकअप एयर कंडीशनिंग, साइट की निगरानी के लिए 24x7x365 कर्मियों आदि।) 99.999% uptime (5.25 मिनट प्रति वर्ष डाउनटाइम) । फिर भी, यह बहुत संभावना नहीं है कि आप 99.999% uptime प्राप्त करेंगे (99.99%) क्योंकि समस्याएं अक्सर आपके नियंत्रण के बाहर होती हैं। उदाहरण के लिए, अमेज़ॅन वेब सर्विस और गूगल आश्चर्यजनक रूप से विश्वसनीय वेब सेवाओं की पेशकश करते हैं, फिर भी उनमें से बड़े वर्गों को कभी-कभी घंटों के लिए नीचे दिया जाता है।

इसे चेहरा, हर कोई चाहता हैERDDAP™100% uptime, या कम से कम vaunted "six nines" (99.9999% अपटाइम प्रति वर्ष डाउनटाइम के 32 सेकंड के बराबर है) लेकिन ऐसा कोई तरीका नहीं है कि आप इसे कितना समय, प्रयास और पैसा खर्च करते हैं।

लेकिनERDDAP™अपटाइम यहाँ वास्तविक लक्ष्य नहीं है। लक्ष्य विश्वसनीय बनाना है प्रणाली किसी भी डेटा को खोना नहीं है। यह एक सोल्वेबल समस्या है।

समाधान यह है: कंप्यूटर सॉफ्टवेयर में गलती-सहिष्णुता का निर्माण जो डेटा को डेटा भेज रहा हैERDDAP। विशेष रूप से, सॉफ़्टवेयर को डेटा के एक कतार को बनाए रखना चाहिए जो जाने की प्रतीक्षा करता हैERDDAP। जब डेटा कतार में जोड़ा जाता है, तो सॉफ़्टवेयर को प्रतिक्रिया की जांच करनी चाहिएERDDAP। यदि प्रतिक्रिया में डेटा प्राप्त नहीं होता है। कोई त्रुटि नहीं, फिर सॉफ्टवेयर को कतार में डेटा छोड़ देना चाहिए। जब अधिक डेटा उत्पन्न होता है और कतार में जोड़ा जाता है, तो सॉफ्टवेयर को फिर से कतार में डेटा को इंसर्ट करने की कोशिश करनी चाहिए। (शायद\[\]प्रणाली) । यह सफल होगा या विफल हो जाएगा। यदि यह विफल हो जाता है, तो यह बाद में फिर से कोशिश करेगा। यदि आप इस तरह से काम करने के लिए सॉफ्टवेयर लिखते हैं और यदि सॉफ्टवेयर डेटा के कुछ दिनों के लिए कतार बनाने के लिए तैयार है, तो आपके पास वास्तव में सेंसर के डेटा का 100% अपलोड करने का एक अच्छा मौका है।ERDDAP। और आपने इसे बिना किसी प्रयास या व्यय के किया होगा।

\[पृष्ठभूमि: हम यह नहीं सोचते थे।यह कैसे कंप्यूटर नेटवर्क विश्वसनीयता प्राप्त करते हैं। कंप्यूटर नेटवर्क स्वाभाविक रूप से अविश्वसनीय हैं। जब आप एक कंप्यूटर से दूसरे कंप्यूटर में एक फ़ाइल ट्रांसफर करते हैं, तो भेजने वाले सॉफ्टवेयर को पता चलता है कि कुछ पैकेट खो सकते हैं। यदि इसे प्राप्तकर्ता से दिए गए पैकेट के लिए उचित स्वीकृति नहीं मिलती है, तो यह खोए हुए पैकेट को फिर से भेज देता है। इस दृष्टिकोण के साथ, अपेक्षाकृत सरल प्रेषक और रिसीवर सॉफ्टवेयर एक अविश्वसनीय नेटवर्क के शीर्ष पर एक विश्वसनीय फ़ाइल ट्रांसफर सिस्टम का निर्माण कर सकता है।\]

क्यों JSON लाइन्स CSV फ़ाइलें?

EDDTableFromHttpGet उपयोगJSON लाइन्स CSV फ़ाइलोंडेटा भंडारण के लिए। कारण हैं:

  • मुख्य कारण यह है: JSON लाइन्स CSV फ़ाइलों की सादगी एकाधिक धागे को दिए गए फ़ाइल में लिखने की अनुमति देने के लिए एक तेज़, आसान और विश्वसनीय तरीका प्रदान करती है। (उदाहरण के लिए, फ़ाइल नाम पर सिंक्रनाइज़ करके) ।
  • अगर एक JSON लाइन CSV फ़ाइल कभी भ्रष्ट हो गया (उदाहरण के लिए, एक लाइन पर त्रुटि के कारण अमान्य) , EDDTableFromFromHttpGet अभी भी त्रुटि रेखा से पहले और बाद में सभी लाइनों पर डेटा पढ़ा सकता है। और .insert और .delete प्रणाली डेटा फ़ाइल में नए डेटा जोड़ने के लिए जारी रख सकता है।
  • चूंकि JSON लाइन्स CSV फाइलें ASCII फाइलें हैं, यदि कभी कोई फ़ाइल भ्रष्ट हो गई तो यह तय करना आसान होगा। (पाठ संपादक में) ।
  • JSON लाइन्स CSV समर्थन यूनिकोड तार।
  • JSON लाइन्स CSV परिवर्तनीय लंबाई स्ट्रिंग का समर्थन करता है (कुछ अधिकतम लंबाई तक सीमित नहीं) ।
  • JSON लाइन्स CSV 64 बिट पूर्णांक का समर्थन करता है (लंबा) ।
  • JSON लाइन्स CSV के औपचारिक प्रकृति और अतिरिक्त वाक्यविन्यास (पुराने स्कूल CSV बनाम) कुछ अतिरिक्त आश्वासन प्रदान करता है कि किसी दिए गए लाइन को भ्रष्ट नहीं किया गया है।

हमने शुरू में उपयोग करने की कोशिश की.ncएक असीमित आयाम के साथ 3 फाइलें। हालांकि, समस्याएं थीं:

  • मुख्य समस्या थी: एकाधिक धागे को लिखने की अनुमति देने का कोई विश्वसनीय तरीका नहीं है.nc3 फ़ाइल, भले ही धागे एक सिंक्रनाइज़ तरीके से लिखने के द्वारा सहयोग करते हैं।
  • यदि.nc3 फ़ाइल भ्रष्ट हो जाती है, .insert और .delete प्रणाली फ़ाइल का उपयोग जारी नहीं रख सकती है।
  • क्योंकि.nc3 फाइलें द्विआधारी हैं, यदि कोई फ़ाइल भ्रष्ट हो जाती है (जो वे बहु-थ्रेडिंग समस्या के कारण करते हैं) वे निश्चित रूप से कठिन या असंभव हैं। मरम्मत के लिए कोई उपकरण नहीं है।
  • CF में स्ट्रिंग्स की एन्कोडिंग को निर्दिष्ट करने का कोई तरीका नहीं है, इसलिए यूनिकोड, उदाहरण के लिए, UTF-8 एन्कोडिंग का समर्थन करने का कोई आधिकारिक तरीका नहीं है। हम एक \_Encoding विशेषता का समर्थन करने के लिए CF प्राप्त करने की कोशिश की लेकिन किसी भी प्रगति करने में असमर्थ थे। (Unidataउनके क्रेडिट के लिए, \_Encoding विशेषता का समर्थन करता है।)
  • .nc3 फाइलें केवल निश्चित लंबाई स्ट्रिंग का समर्थन करती हैं। फिर, हमने CF प्राप्त करने की कोशिश की औरUnidataचर लंबाई स्ट्रिंग का समर्थन करने के लिए लेकिन किसी भी प्रगति को बनाने में असमर्थ थे।
  • .nc3 फाइलें स्ट्रिंग चर से एकल वर्ण चर को अलग करने के लिए एक आसान तरीका का समर्थन नहीं करती हैं। फिर, हमने CF प्राप्त करने की कोशिश की औरUnidataइन दो डेटा प्रकारों को अलग करने के लिए एक प्रणाली का समर्थन करने के लिए, लेकिन किसी भी प्रगति को बनाने में असमर्थ थे।
  • .nc3 फाइलें केवल एक निर्दिष्ट एन्कोडिंग के साथ 8-बिट वर्णों का समर्थन करती हैं। फिर, हमने CF प्राप्त करने की कोशिश की औरUnidataएन्कोडिंग निर्दिष्ट करने के लिए एक प्रणाली का समर्थन करने के लिए, लेकिन कोई प्रगति करने में असमर्थ थे।
  • .nc3 फाइलें 64-बिट पूर्णांक का समर्थन नहीं करती हैं (लंबा) । फिर, हमने CF प्राप्त करने की कोशिश की औरUnidataलंबे समय तक सिस्टम का समर्थन करने के लिए, लेकिन किसी भी प्रगति को बनाने में असमर्थ थे।  
संस्करण

क्योंकि EDDTable FromHttp टाइमस्टैम्प और प्रत्येक परिवर्तन के लेखक के साथ डेटासेट में सभी परिवर्तनों का एक लॉग स्टोर करें, यह जल्दी से उस डेटासेट को किसी भी समय के रूप में पुनर्निर्मित कर सकता है। एक अर्थ में, समय में किसी भी बिंदु के लिए एक संस्करण है। यदि डेटा के लिए उपयोगकर्ता के अनुरोध में टाइमस्टैम्प शामिल है<= constraint, उदाहरण के लिए, और timestamp<= 2016-06-23T16:32:22.128Z (या किसी भी समय बिंदु) लेकिन लेखक या आदेश की कोई बाधा नहीं है।ERDDAP™पहली बार उस समय के रूप में डेटासेट के एक संस्करण उत्पन्न करके अनुरोध का जवाब देगा। फिर,ERDDAP™उपयोगकर्ता की अन्य बाधाओं को लागू करता है, जैसा कि डेटा के लिए किसी अन्य अनुरोध के साथERDDAP। EDDTableFromHttpGet स्थापित किया गया है ताकि यह प्रक्रिया बहुत तेज और कुशल हो, यहां तक कि बहुत बड़े डेटासेट के लिए भी।

इसी तरह, एक उपयोगकर्ता तब पता लगा सकता है जब डेटासेट को अनुरोध करके अद्यतन किया गया था। (टाइमस्टैम्प) और निर्धारित ()

और डेटा के लिए किसी भी अनुरोध के लिए, डेटासेट के किसी भी संस्करण के लिए, उपयोगकर्ता देख सकते हैं कि कौन से लेखक ने कौन-सा परिवर्तन किया है, और जब उन्होंने उन्हें बनाया।

यह संस्करण सिस्टम सक्षम बनाता हैReproducible Scienceकिसी भी समय, किसी भी समय, किसी भी समय डेटासेट के संस्करण से डेटा अनुरोध कर सकता है। यह ठीक-ग्रेन संस्करण किसी अन्य प्रणाली के साथ संभव नहीं है जिसे हम जानते हैं। अंतर्निहित तंत्र बहुत कुशल है, जिसमें कोई अतिरिक्त भंडारण स्थान की आवश्यकता नहीं है, और प्रसंस्करण ओवरहेड वास्तव में न्यूनतम है।

हर किसी के पास इस प्रकार के ठीक-ग्रेन संस्करण की आवश्यकता नहीं है, लेकिन यह बहुत उपयोगी है, शायद आवश्यक है, एक बड़े डेटा प्रबंधन संगठन के संदर्भ में (उदाहरण के लिए, OOI, अर्थ क्यूब, डेटा वन औरNOAAएनसीईआरटी) जहां डेटासेट में एकाधिक लेखक हो सकते हैं (उदाहरण के लिए, सेंसर, एक स्वचालित क्यूसी स्क्रिप्ट और एक मानव संपादक) ।

\[इतिहास: इस प्रकार के संस्करण की आवश्यकता पहले मेरे लिए आई थी (बॉब) 2008 में OI के बारे में पढ़ने और चर्चा करते समय। उस समय, OOI में गिट पर आधारित संस्करण के लिए एक बोझिल, धीमी, अक्षम प्रणाली थी। गिट क्या यह के लिए डिजाइन किया गया था के लिए महान है, लेकिन यह नहीं। 2008 में, जबकि एक OOI चर्चा में, मैंने डेटा प्रबंधन के लिए एक व्यापक, कुशल वैकल्पिक-से-OOI प्रणाली तैयार की, जिसमें कई विशेषताएं शामिल हैं जिन्हें मैंने जोड़ा है।ERDDAP™तब से, और इस संस्करण प्रणाली सहित। उस समय और उसके बाद से, ओओआई अपने संस्करण प्रणाली के लिए प्रतिबद्ध था और विकल्पों में रुचि नहीं थी। 2016 में, इस योजना के अन्य पहलू सामने आए और मैंने इसे लागू करना शुरू कर दिया। क्योंकि अन्य परियोजनाओं पर काम करने के लिए कई रुकावटें थीं, मैंने 2018 तक खत्म नहीं किया था। अब भी, मैं किसी भी अन्य वैज्ञानिक डेटा सिस्टम से अवगत नहीं हूं जो अक्सर डेटासेट बदलने के लिए किसी भी समय किसी भी बिंदु से डेटा के एक संस्करण तक ऐसी त्वरित और आसान पहुंच प्रदान करता है। सरल फ़ाइल सिस्टम इसे प्रदान नहीं करते हैं। रिलेशनल डेटाबेस नहीं है। Cassandra नहीं है।\]

https://www.youtu.com\{#https-put-and-delete}
  • "What के बारे में HTTPS PUT और DELETE?!
    हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल (HTTP) वर्ल्ड वाइड वेब का आधार है और कारण यह है कि वेब पेज यूआरएल "के साथ शुरू होता है http://" या " https://" । HTTP एक अतिरिक्त सुरक्षा परत के साथ है। हर दिन, ब्राउज़र, स्क्रिप्ट और कंप्यूटर प्रोग्राम अरबों HTTP बनाते हैं (एस) भुगतान दूरस्थ स्रोतों से जानकारी प्राप्त करने का अनुरोध करता है। HTTP (एस) अन्य भी शामिल हैक्रियाविशेष रूप से पुट (सर्वर पर डेटा को धक्का देने के लिए) और DELETE (सर्वर से डेटा DELETE करने के लिए) । हाँ, PUT और DELETE HTTP के माध्यम से डेटासेट से डेटा को डालने और हटाने का उचित तरीका है। (एस) । GET सॉफ़्टवेयर के प्रत्येक टुकड़े द्वारा समर्थित है जो HTTP के साथ काम कर सकता है (एस) । वास्तव में काम करना आसान है। सभी पहले से ही जानते हैं कि कैसे काम करने के लिए? (जिसका उपयोग अनिवार्य रूप से उसी तरह किया जा सकता है जैसे GET) इसलिए हमने EDDTableFromHttpGet को GET और POST के साथ काम किया। बहुत कम लोग (कंप्यूटर प्रोग्रामर) कभी कभी PUT और DELETE के साथ काम किया है। PUT और DELETE आम तौर पर केवल कंप्यूटर भाषाओं द्वारा समर्थित होते हैं, इसलिए उनका उपयोग एक कुशल कार्यक्रम की आवश्यकता होती है। इसलिए PUT और DELETE आमतौर पर उपकरण विकसित करने के तरीके को देखते हुए एक बहुत अधिक बोझिल दृष्टिकोण होता है।  
HttpGet Notes
  • नोट्स
    • नहींdataVariableडेटा टाइप = चार हो सकता है। इसके बजाय datatype=String का प्रयोग करें। यदि आपको वास्तव में डेटा टाइप = चार, ईमेल क्रिस की आवश्यकता है। जॉन at noaa.gov.  
धन्यवाद
  • मूल विचार के लिए CHORDS को धन्यवाद।
    EDDTableFromHttpGet के लिए बुनियादी विचार (यानी, एक का उपयोग करनाHTTP GETडेटासेट में डेटा जोड़ने का अनुरोध करें) यूसीएआर से है (NCAR?) क्लाउड-होस्टेड रियल टाइम डेटा सर्विसेज (मंडल) परियोजना अनुरोध में मापदंडों के लिए प्रारूप (बार-बार नाम = मूल्य , अलग करके और) एक ही मानक प्रारूप है कि वेब पृष्ठों पर HTML रूपों द्वारा प्रयोग किया जाता है। यह एक सरल और शानदार विचार है और इससे भी अधिक है क्योंकि यह पूरी तरह से साथ मेज़ करता हैERDDAPसारणीबद्ध डेटा से निपटने के लिए मौजूदा प्रणाली। विचार बाधा में स्पष्ट है, लेकिन मैं (बॉब) इसके बारे में नहीं सोचा था। EDDTableFromHttp उस बुनियादी विचार का उपयोग करें, इसे लागू करने के हमारे विचारों के साथ मिलकर, सिस्टम बनाने के लिएERDDAP™डेटा अपलोड करने के लिए। सिस्टम में डेटा को पुश करने के लिए GET का उपयोग करने के मूल विचार के अलावा, EDDTableFromHttpGet कार्यान्वयन पूरी तरह से अलग है और पूरी तरह से CHORDS से स्वतंत्र है और इसमें विभिन्न विशेषताएं हैं। (उदाहरण के लिए, लॉग फाइलें, डेटा का मिश्रण, विभिन्न सुरक्षा प्रणाली, CRUD समर्थन, पुन: प्रयोज्य डेटा) । CHORDS के लिए हमारा एक्सपोजर सिर्फ एक वेबिनार था। हमने अपने कोड को नहीं देखा या उनकी परियोजना के बारे में पढ़ा क्योंकि हम तुरंत जानते थे कि हम सिस्टम को एक अलग तरीके से लागू करना चाहते थे। लेकिन हम उन्हें बुनियादी विचार के लिए आभारी हैं। CHORDS का पूरा संदर्भ है Daniels, M.D., Kerkez, B., चंद्रसेकर, V., Graves, S., Stamps, D.S., Martin, C., Dye, M., Gooch, R., Bartos, M., Jones, J., Keiser, K. (2014) । भूविज्ञान के लिए क्लाउड-होस्टेड रियल टाइम डेटा सर्विसेज (मंडल) सॉफ्टवेयर UCAR/NCAR - पृथ्वी अवलोकन प्रयोगशाला। https://doi.org/10.5065/d6v1236q
     

EDDTableFromHyraxफ़ाइलें

EDDTableFromHyraxफ़ाइलें (विकृत) कई चर के साथ डेटा फ़ाइलों को एकत्रित करता है, प्रत्येक एक या अधिक साझा आयाम के साथ (उदाहरण के लिए, समय, ऊंचाई (या गहराई) अक्षांश) , और एक द्वारा सेवा कीHyrax OPeNDAPसर्वर

  • यह डेटासेट प्रकार है डिप्रेषित । नए और अधिक सामान्य समाधान का उपयोग करना हैकैश EDDTable विकल्प सेफिल (या एक संस्करण) , जो दूरस्थ फ़ाइलों की एक स्थानीय प्रतिलिपि बनाता है और स्थानीय फ़ाइलों से डेटा प्रदान करता है। The The most of the<कैशFromUrl> विकल्प किसी भी प्रकार के सारणीबद्ध डेटा फ़ाइल के साथ इस्तेमाल किया जा सकता है। **
    यदि आप कुछ कारणों से काम नहीं कर सकते हैं तो क्रिस को ईमेल करें। जॉन at noaa.gov. यदि 2020 से पहले कोई शिकायत नहीं है, तो इस डेटासेट प्रकार को हटाया जा सकता है। **
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।
  • अधिकांश मामलों में, प्रत्येक फ़ाइल में बाईं ओर एकाधिक मान होते हैं। (पहला) आयाम, उदाहरण के लिए, समय।
  • अक्सर फ़ाइलें (लेकिन नहीं करना चाहिए) अन्य आयामों के लिए एक एकल मान है (उदाहरण के लिए, ऊंचाई (या गहराई) अक्षांश) ।
  • फ़ाइलों में अतिरिक्त आयाम के साथ वर्ण चर हो सकता है (उदाहरण के लिए, nCharacter) ।
  • Hyraxसर्वर को यूआरएल में "/dods-bin/nph-dods/" या "/opendap/" द्वारा पहचाना जा सकता है।
  • इस वर्ग स्क्रीन स्क्रैपHyraxप्रत्येक निर्देशिका में फ़ाइलों की सूची के साथ वेब पेज। इसके कारण, यह वर्तमान प्रारूप के लिए बहुत विशिष्ट हैHyraxवेब पेज हम समायोजित करने की कोशिश करेंगेERDDAP™जल्दी अगर/जब भविष्य के संस्करणHyraxफ़ाइलों को कैसे सूचीबद्ध किया जाता है।
  • The The most of the<फ़ाइलDir> सेटिंग को नजरअंदाज कर दिया गया है। चूंकि यह वर्ग डाउनलोड करता है और प्रत्येक दूरस्थ डेटा फ़ाइल की स्थानीय प्रति बनाता है,ERDDAP™फाइल को मजबूर करता है देना बड़ाParentDirectory साइटमैप datasetID /।
  • के लिए<sourceUrl>, डेटासेट की आधार निर्देशिका के URL का उपयोग करेंHyraxसर्वर उदाहरण के लिए, <sourceUrl> http://edac-dap.northerngulfinstitute.org/dods-bin/nph-dods/WCOS/nmsp/wcos/ </sourceUrl> (लेकिन इसे एक पंक्ति में डाल दिया) (खेद है कि सर्वर अब उपलब्ध नहीं है) । The The most of thesourceUrlआमतौर पर वेब पेज में " होता हैOPeNDAPसर्वर सूचकांक\[निर्देशिकानाम\]"ऊपर"।
  • चूंकि यह वर्ग हमेशा डाउनलोड करता है और प्रत्येक दूरस्थ डेटा फ़ाइल की स्थानीय प्रतिलिपि बनाता है, इसलिए आपको कभी भी इस डेटासेट को लपेटना नहीं चाहिए।EDDTableCopy
  • इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।
  • 1D, 2D, 3D और 4D उदाहरणों के लिए देखेंEDDTableFromNcFiles।  

EDDTableFromInvalidCRAFiles

EDDTableFromInvalidCRAFiles से डेटा एकत्र करनाNetCDF (v3) .ncफ़ाइलें जो CF DSG Contiguous Ragged Array का एक विशिष्ट, अवैध, संस्करण का उपयोग करती हैं (सीआरए) फ़ाइलें हालांकिERDDAP™इस फ़ाइल प्रकार का समर्थन करता है, यह एक अमान्य फ़ाइल प्रकार है जिसे कोई भी उपयोग करना शुरू नहीं करना चाहिए। वर्तमान में इस फ़ाइल प्रकार का उपयोग करने वाले समूह को दृढ़ता से उपयोग करने के लिए प्रोत्साहित किया जाता हैERDDAP™मान्य CF DSG CRA फ़ाइलों को उत्पन्न करने और इन फ़ाइलों का उपयोग बंद करने के लिए।

विवरण: इन फ़ाइलों में एकाधिक पंक्ति \_size चर होते हैं, प्रत्येक नमूना \_dimension विशेषता के साथ। फाइलें गैर-सीएफ मानक फाइलें हैं क्योंकि एकाधिक नमूना (ओब) आयाम इस अतिरिक्त नियम और वादा के साथ एक दूसरे से संबंधित हैं जो CF DSG विनिर्देश का हिस्सा नहीं है: "आप दिए गए उदाहरण, तापमान मूल्य को जोड़ सकते हैं। (अस्थायी \_obs आयाम) दी गई गहराई मान के साथ (z \_obs आयाम, सबसे अधिक मूल्यों के साथ आयाम) , क्योंकि: तापमान पंक्ति \_size (दिए गए कलाकारों के लिए) या तो 0 या इसी गहराई पंक्ति \_size के बराबर होगा (उस कास्ट के लिए) (यह नियम है) । इसलिए, यदि तापमान पंक्ति \_size 0 नहीं है, तो उस कास्ट के लिए n तापमान मान उस कास्ट के लिए सीधे n गहराई मानों से संबंधित हैं (यह वादा है) "

इन फ़ाइलों के साथ एक और समस्या: प्रिंसिपल \_Investigator पंक्ति \_size चर में एक नमूना \_dimension विशेषता नहीं है और उपरोक्त नियम का पालन नहीं करता है।

इस डेटासेट प्रकार के लिए नमूना फ़ाइलों को पाया जा सकता है https://data.nodc.noaa.gov/thredds/catalog/ncei/wod/ \[2020-10-21 यह सर्वर अब विश्वसनीय नहीं है\]।

इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।

हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।

पहली चीज GenDatasets Xml इस प्रकार के डेटासेट के लिए करता है जब आप सवालों का जवाब देते हैं, तो नमूना फ़ाइल की एनसीडंप जैसी संरचना को मुद्रित किया जाता है। तो अगर आप जनरेटडाटासेट के माध्यम से पहले पाश के लिए कुछ गौफी जवाब में प्रवेश करते हैं Xml, कम से कम आप देख सकते हैं कि क्याERDDAP™फ़ाइल को पढ़ सकते हैं और देख सकते हैं कि कौन से आयाम और चर फाइल में हैं। फिर आप जेनरेटडाटासेटएक्सएमएल के माध्यम से दूसरे लूप के लिए बेहतर जवाब दे सकते हैं।  

EDDTableFromJsonlCSVFiles

EDDTableFromJsonlCSVFiles से डेटा एकत्र करनाJSON लाइन्स CSV फ़ाइलों। इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।

  • जैसा कि jsonlines.org कहते हैं, यह प्रारूप "सीएसवी से बेहतर" है। (और कानूनी तौर पर, एक संघीय कर्मचारी के रूप में, मैं उनसे सहमत या असहमति नहीं कर सकता - कितना पागल है?) । CSV कभी औपचारिक रूप से परिभाषित नहीं किया गया है और मूल स्प्रेडशीट कार्यक्रमों के संबंध से संबंधित ऐतिहासिक बैगेज द्वारा बाधित है। JSON लाइन्स CSV, तुलना में, व्यापक रूप से उपयोग किए जाने वाले JSON मानक के कनेक्शन से पूरी तरह से परिभाषित और लाभ प्राप्त होता है, जो इसके कनेक्शन से उसके बदले लाभ में लाभ देता है।Javaस्क्रिप्ट और स्क्रिप्टJava। विशेष रूप से, लंबे पूर्णांकों और स्ट्रिंग्स में यूनिकोड वर्णों के लिए पूर्ण समर्थन है, और अन्य विशेष वर्णों को शामिल करने का एक स्पष्ट तरीका है। (विशेष रूप से टैब और न्यूलाइन) स्ट्रिंग के भीतर।

यह प्रारूप विशेष रूप से डेटासेट के लिए अच्छा है जहां आपको समय-समय पर किसी दिए गए डेटा फ़ाइल के अंत में अतिरिक्त पंक्तियों को जोड़ना होगा। उस कारण और दूसरों के लिए (ऊपर देखें) ,EDDTableFromHttpGetडेटा भंडारण के लिए जेसन लाइन्स CSV फ़ाइलों का उपयोग करता है।

  • इनपुट फ़ाइलों को UTF-8 कोडित माना जाता है। हालांकि, \u दिया हिन्दी विशेष वर्णों को एन्कोड करने के लिए प्रारूप (उदाहरण के लिए, \u20ac यूरो चरित्र के लिए एन्कोडिंग है) , आपके पास फ़ाइलों को लिखने का विकल्प है ताकि उनमें केवल 7-बिट ASCII वर्ण होते हैं, जिनका उपयोग \u हिन्दी #127 से ऊपर सभी अक्षरों को एन्कोड करने के लिए।  
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।

पहली चीज GenDatasetsXml इस प्रकार के डेटासेट के लिए करता है जब आप जवाब देते हैं तो सवाल नमूना फ़ाइल की एनसीडंप जैसी संरचना को प्रिंट करता है। तो अगर आप जनरेटडाटासेट के माध्यम से पहले पाश के लिए कुछ गौफी जवाब में प्रवेश करते हैं Xml, कम से कम आप देख सकते हैं कि क्याERDDAP™फ़ाइल को पढ़ सकते हैं और देख सकते हैं कि कौन से आयाम और चर फाइल में हैं। फिर आप जेनरेटडाटासेटएक्सएमएल के माध्यम से दूसरे लूप के लिए बेहतर जवाब दे सकते हैं।

  • कब: कबERDDAP™JSON पढ़ा लाइन्स CSV डेटा फ़ाइलों, अगर यह किसी दिए गए लाइन पर एक त्रुटि मिलती है (उदाहरण के लिए, वस्तुओं की गलत संख्या) यह एक चेतावनी संदेश लॉग करता है ("WARNING: खराब रेखा (s) डेटा की एक सूची के साथ) tolog.txt फ़ाइलऔर फिर बाकी डेटा फ़ाइल को पढ़ना जारी रखता है। इस प्रकार, समय-समय पर देखने की आपकी ज़िम्मेदारी है (या ऐसा करने के लिए एक स्क्रिप्ट लिखने) लॉग में उस संदेश के लिए। ताकि आप डेटा फ़ाइलों में समस्याओं को ठीक कर सकें।ERDDAP™इस तरह से सेट किया गया है ताकि उपयोगकर्ता सभी उपलब्ध वैध डेटा को पढ़ना जारी रख सकें, भले ही फ़ाइल की कुछ पंक्तियां त्रुटियां हों।  

EDDTableFromMultidimNcFiles

EDDTableFromMultidimNcFiles से डेटा एकत्र करनाNetCDF (v3) .nc (या.ncएमएल) कई चर के साथ फ़ाइलों, प्रत्येक एक या अधिक साझा आयाम के साथ। फ़ाइलों के साथ या एक अतिरिक्त आयाम के बिना वर्ण चर हो सकता है (उदाहरण के लिए, STRING14) । इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।

  • यदि फ़ाइल बहुआयामी CF DSG संस्करण हैं, तो इस डेटासेट प्रकार का उपयोग इसके बजाय करेंEDDTableFromNcCFFiles।  
  • से नए सारणीबद्ध डेटासेट के लिए.ncपुरानी कोशिश करने से पहले इस विकल्प का उपयोग करेंEDDTableFromNcFiles। इस वर्ग के कुछ फायदे हैं:
    • यह वर्ग विभिन्न प्रकार की फ़ाइल संरचनाओं से अधिक चर पढ़ सकता है। यदि आप निर्दिष्ट कर रहे हैं DimensionCSV (आयाम नामों की एक comma-separated सूची) में GenerateDatasets Xml (or)<आयाम CSV>datasets.xmlइन डेटासेटों में से एक के लिए जानकारी, फिरERDDAP™केवल स्रोत फ़ाइलों में चर पढ़ेगा जो इन आयामों में से कुछ या सभी का उपयोग करते हैं, साथ ही सभी स्केलर वेरिएबल भी पढ़ सकते हैं। यदि कोई आयाम समूह में है, तो आपको अपना पूरा नाम निर्दिष्ट करना होगा, उदाहरण के लिए, " समूहनाम/आयामनाम "।
    • यह वर्ग अक्सर फ़ाइलों को बहुत जल्दी अस्वीकार कर सकता है यदि वे अनुरोध के बाधाओं से मेल नहीं खाते हैं। तो बड़े संग्रह से डेटा पढ़ने अक्सर बहुत तेजी से जाना होगा।
    • यह वर्ग वास्तविक चार चर संभालती है (गैर स्ट्रिंग चर) सही ढंग से।
    • यह वर्ग स्ट्रिंग चर को ट्रिम कर सकता है जब निर्माता ने Netcdf-java के लिखने वाले स्ट्रिंग्स का उपयोग नहीं किया था। (जो स्ट्रिंग के अंत को चिह्नित करने के लिए char #0 का पालन करता है) ।
    • यह वर्ग व्यक्तिगत फ़ाइलों से निपटने में बेहतर है, जिसमें कुछ चर या आयामों की कमी होती है।
    • यह वर्ग लापता मूल्यों के साथ पंक्तियों के ब्लॉकों को हटा सकता है जैसा कि निर्दिष्ट हैCF Discrete Sampling Geometries (DSG) पूर्ण बहुआयामी ऐरे फाइलें
       
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।

पहली चीज GenDatasetsXml इस प्रकार के डेटासेट के लिए करता है जब आप जवाब देते हैं तो सवाल नमूना फ़ाइल की एनसीडंप जैसी संरचना को प्रिंट करता है। तो अगर आप जनरेटडाटासेट के माध्यम से पहले पाश के लिए कुछ गौफी जवाब में प्रवेश करते हैं Xml, कम से कम आप देख सकते हैं कि क्याERDDAP™फ़ाइल को पढ़ सकते हैं और देख सकते हैं कि कौन से आयाम और चर फाइल में हैं। फिर आप जेनरेटडाटासेटएक्सएमएल के माध्यम से दूसरे लूप के लिए बेहतर जवाब दे सकते हैं।

समूह जनगणना Xml एक "समूह" के लिए पूछेंगे। आप किसी भी समूह की खोज करने के लिए "" दर्ज कर सकते हैं, " कुछ समूह " कुछसमूह/कुछ "इसने एक विशिष्ट समूह की खोज की है, या "\[जड़\]"यह सिर्फ मूल समूह की खोज करने के लिए। "समूह" स्ट्रिंग बन जाती है<समूह> मेंdatasets.xmlडेटासेट के लिए जानकारी (हालांकि "\[जड़\]"") ।

आयाम CSV - जेनरेटडाटासेट Xml एक "DimensionCSV" स्ट्रिंग के लिए पूछेंगे। यह आयामों के एक सेट के स्रोत नामों की एक तुलनात्मक-मूल्य सूची है। जनगणना Xml केवल नमूना में डेटा चर पढ़ा होगा.ncजो कुछ या सभी आयामों का उपयोग करते हैं (कोई अन्य आयाम) इसके अलावा, फ़ाइल में सभी स्केलर वेरिएबल्स और उन डेटा वेरिएबल्स से डेटासेट बनाते हैं। यदि कोई आयाम समूह में है, तो आपको अपना पूरा नाम निर्दिष्ट करना होगा, उदाहरण के लिए, " समूहनाम/आयामनाम "। यदि आप कुछ निर्दिष्ट नहीं करते हैं (एक खाली स्ट्रिंग) जेनरेट डाटासेट Xml अधिकांश आयामों के साथ चर की तलाश करेगा, इस सिद्धांत पर कि वे सबसे दिलचस्प होंगे, लेकिन ऐसा समय हो सकता है जब आप डेटा चर के कुछ अन्य समूह से डेटासेट बनाना चाहते हैं जो आयामों के कुछ अन्य समूह का उपयोग करते हैं। यदि आप एक आयाम नाम निर्दिष्ट करते हैं जो मौजूद नहीं है (उदाहरण के लिए, NO \_MATCH) ,ERDDAP™केवल सभी स्केलर चर पाएंगे। "DimensionCSV" स्ट्रिंग हो जाता है<आयाम CSV>datasets.xmlडेटासेट के लिए जानकारी।

इलाजDimensionA

अमान्य की एक श्रेणी है.ncफ़ाइलें (क्योंकि वे सीएफ नियमों का पालन नहीं करते हैं) इसमें कई आयाम हैं (उदाहरण के लिए, lat, lon, समय) जब वे सिर्फ एक आयाम का उपयोग करते हैं (उदाहरण के लिए, समय) उदाहरण के लिए:

    dimensions:
time = UNLIMITED ; // (1437 currently)
depth = 10;
lat = 1437 ;
lon = 1437 ;
variables:
double time(time) ;
double lat(lat) ;
double lon(lon) ;
float temperature(time, depth) ;

EDDTableFromMultidimNcFiles में इन फ़ाइलों से निपटने के लिए एक विशेष विशेषता है: यदि आप वैश्विक विशेषता "treatDimensionAs" जोड़ते हैं तो डेटासेट वैश्विकaddAttributes, आप कह सकते हैंERDDAP™कुछ आयामों का इलाज करने के लिए (उदाहरण के लिए, lat और lon) जैसा कि वे एक और आयाम थे (उदाहरण के लिए, समय) । विशेषता मान एक अल्पविराम अलग सूची होना चाहिए जो "से" आयाम निर्दिष्ट करती है और फिर "से" आयाम निर्दिष्ट करती है, उदाहरण के लिए, lat, lon, समय
फिरERDDAP™अगर यह था तो फ़ाइल पढ़ेगा:

    dimensions:
time = UNLIMITED ; // (1437 currently)
depth = 10;
variables:
double time(time) ;
double lat(time) ;
double lon(time) ;
float temperature(time, depth) ;

बेशक, सूची में प्रत्येक आयाम का वर्तमान आकार समान होना चाहिए; अन्यथा,ERDDAP™फ़ाइल को "Bad फ़ाइल" के रूप में व्यवहार करेगा।

ध्यान दें कि ये फाइलें अमान्य हैं क्योंकि वे CF नियमों का पालन नहीं करते हैं। हालांकिERDDAP™उन्हें पढ़ सकते हैं, हम दृढ़ता से अनुशंसा करते हैं कि आप इस तरह की फ़ाइलों को नहीं बनाते क्योंकि अन्य CF आधारित सॉफ़्टवेयर टूल उन्हें सही ढंग से पढ़ने में सक्षम नहीं होंगे। यदि आपके पास पहले से ही ऐसी फाइलें हैं, तो हम जितनी जल्दी हो सके उन्हें वैध फ़ाइलों के साथ बदलने की सलाह देते हैं।

EDDTableFromNcFiles

EDDTableFromNcFiles से डेटा एकत्र करनाNetCDF (v3) .nc (या.ncएमएल) फ़ाइलेंजैरफ़ाइलें (संस्करण 2.25) कई चर के साथ, प्रत्येक एक साझा आयाम के साथ (उदाहरण के लिए, समय) या एक से अधिक साझा आयाम (उदाहरण के लिए, समय, ऊंचाई (या गहराई) अक्षांश) । फाइलों में समान आयाम नाम होना चाहिए। किसी दिए गए फ़ाइल में प्रत्येक आयाम के लिए एकाधिक मान हो सकते हैं और मान विभिन्न स्रोत फ़ाइलों में भिन्न हो सकते हैं। फ़ाइलों में अतिरिक्त आयाम के साथ वर्ण चर हो सकता है (उदाहरण के लिए, STRING14) । इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।

Zarr फ़ाइलों में थोड़ा अलग व्यवहार होता है और या तो फ़ाइलNameRegex या pathRegex को "zarr" शामिल करने की आवश्यकता होती है।

  • यदि.ncफ़ाइलों में से एक का उपयोग करेंCF Discrete Sampling Geometries (DSG) फ़ाइल प्रारूपों का उपयोग करने का प्रयास करेंEDDTableFromNcCFFilesइससे पहले।  
  • से नए सारणीबद्ध डेटासेट के लिए.ncफ़ाइलें, नया प्रयास करेंEDDTableFromMultidimNcFilesपहला।  
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।

पहली चीज GenDatasetsXml इस प्रकार के डेटासेट के लिए करता है जब आप जवाब देते हैं तो सवाल नमूना फ़ाइल की एनसीडंप जैसी संरचना को प्रिंट करता है। तो अगर आप जनरेटडाटासेट के माध्यम से पहले पाश के लिए कुछ गौफी जवाब में प्रवेश करते हैं Xml, कम से कम आप देख सकते हैं कि क्याERDDAP™फ़ाइल को पढ़ सकते हैं और देख सकते हैं कि कौन से आयाम और चर फाइल में हैं। फिर आप जेनरेटडाटासेटएक्सएमएल के माध्यम से दूसरे लूप के लिए बेहतर जवाब दे सकते हैं।

आयाम CSV - जेनरेटडाटासेट Xml एक "DimensionCSV" स्ट्रिंग के लिए पूछेंगे। यह आयामों के एक सेट के स्रोत नामों की एक तुलनात्मक-मूल्य सूची है। जनगणना Xml में डेटा चर मिलेगा.ncजो कुछ या सभी आयामों का उपयोग करते हैं, साथ ही सभी स्केलर वेरिएबल्स, और उन डेटा चर से डेटासेट बनाते हैं। यदि आप कुछ निर्दिष्ट नहीं करते हैं (एक खाली स्ट्रिंग) जेनरेट डाटासेट Xml अधिकांश आयामों के साथ चर की तलाश करेगा, इस सिद्धांत पर कि वे सबसे दिलचस्प होंगे, लेकिन ऐसा समय हो सकता है जब आप डेटा चर के कुछ अन्य समूह से डेटासेट बनाना चाहते हैं जो आयामों के कुछ अन्य समूह का उपयोग करते हैं।

  • 1 डी उदाहरण: 1 डी फाइलें 2 डी, 3 डी, 4 डी, ... फ़ाइलों से कुछ अलग हैं।
    • आप का एक सेट हो सकता है.ncडेटा फाइलें जहां प्रत्येक फ़ाइल में एक महीने का डेटा एक बहती हुई buoy से है।
    • प्रत्येक फ़ाइल में 1 आयाम होगा, उदाहरण के लिए, समय (आकार =\[कई\]) ।
    • प्रत्येक फ़ाइल में एक या अधिक 1D चर होंगे जो उस आयाम का उपयोग करते हैं, उदाहरण के लिए, समय, देशांतर, अक्षांश, हवा का तापमान, ....
    • प्रत्येक फ़ाइल में 2D वर्ण चर हो सकते हैं, उदाहरण के लिए, आयाम के साथ (समय, nCharacter) ।  
  • 2D उदाहरण:
    • आप का एक सेट हो सकता है.ncडेटा फाइलें जहां प्रत्येक फ़ाइल में एक महीने का डेटा एक बहती हुई buoy से है।
    • प्रत्येक फ़ाइल में 2 आयाम होंगे, उदाहरण के लिए, समय (आकार =\[कई\]) और आईडी (आकार = 1) ।
    • प्रत्येक फ़ाइल में आयाम के समान नामों के साथ 2 1D वेरिएबल होंगे और समान नाम आयाम का उपयोग करेंगे, उदाहरण के लिए, समय (समय) , आईडी (आईडी) । इन 1D चरों की सूची में शामिल किया जाना चाहिए<dataVariable> dataset XML में है।
    • प्रत्येक फ़ाइल में एक या अधिक 2D चर होंगे, उदाहरण के लिए, देशांतर, अक्षांश, हवा का तापमान, पानी का तापमान, ...
    • प्रत्येक फ़ाइल में 3 डी वर्ण चर हो सकते हैं, उदाहरण के लिए, आयाम के साथ (समय,id, nCharacter) ।  
  • 3D उदाहरण:
    • आप का एक सेट हो सकता है.ncप्रत्येक फ़ाइल में एक महीने का डेटा एक स्थिर buoy से है।
    • प्रत्येक फ़ाइल में 3 आयाम होंगे, उदाहरण के लिए, समय (आकार =\[कई\]) , लैट (आकार = 1) , और lon (आकार = 1) ।
    • प्रत्येक फ़ाइल में आयाम के समान नामों के साथ 3 1D वेरिएबल होंगे और समान नाम आयाम का उपयोग करेगा, उदाहरण के लिए, समय (समय) , लैट (लेट) , lon (lon) । इन 1D चरों की सूची में शामिल किया जाना चाहिए<dataVariable> dataset XML में है।
    • प्रत्येक फ़ाइल में एक या अधिक 3D चर होंगे, उदाहरण के लिए, हवा का तापमान, पानी का तापमान, ...
    • प्रत्येक फ़ाइल में 4D वर्ण चर हो सकते हैं, उदाहरण के लिए, आयाम के साथ (समय, लैटिना,lon,nCharacters) ।
    • फ़ाइल का नाम फ़ाइल के नाम के भीतर buoy का नाम हो सकता है।  
  • 4D उदाहरण:
    • आप का एक सेट हो सकता है.ncडेटा फाइलें जहां प्रत्येक फ़ाइल में एक महीने का डेटा एक स्टेशन से है। प्रत्येक समय, स्टेशन गहराई की एक श्रृंखला पर रीडिंग लेता है।
    • प्रत्येक फ़ाइल में 4 आयाम होंगे, उदाहरण के लिए, समय (आकार =\[कई\]) गहराई (आकार =\[कई\]) , लैट (आकार = 1) , और lon (आकार = 1) ।
    • प्रत्येक फ़ाइल में आयाम के समान नामों के साथ 4 1D वेरिएबल होंगे और समान नाम आयाम का उपयोग करेंगे, उदाहरण के लिए, समय (समय) गहराई (गहराई) , लैट (लेट) , lon (lon) । इन 1D चरों की सूची में शामिल किया जाना चाहिए<dataVariable> dataset XML में है।
    • प्रत्येक फ़ाइल में एक या अधिक 4D चर होंगे, उदाहरण के लिए, हवा का तापमान, पानी का तापमान, ...
    • प्रत्येक फ़ाइल में 5D वर्ण चर हो सकते हैं, उदाहरण के लिए, आयाम के साथ (समय, गहराई, अक्षांश,lon, nCharacter) ।
    • फ़ाइल का नाम फ़ाइल के नाम के भीतर buoy का नाम हो सकता है।  

EDDTableFromNcCFFiles

EDDTableFromNcCFFiles से डेटा एकत्र करता हैNetCDF (v3) .nc (या.ncएमएल) जो फ़ाइलों द्वारा निर्दिष्ट फ़ाइल प्रारूपों में से एक का उपयोग करते हैंCF Discrete Sampling Geometries (DSG) सम्मेलन। इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।

बहुआयामी CF DSG वेरिएंट में से एक का उपयोग करके फ़ाइलों के लिए, उपयोग करेंEDDTableFromMultidimNcFilesइसके बजाय।

CF DSG सम्मेलन दर्जनों फ़ाइल प्रारूपों को परिभाषित करता है और इसमें कई मामूली विविधताएं शामिल हैं। यह वर्ग उन सभी विविधताओं से संबंधित है जिन्हें हम जानते हैं, लेकिन हम एक याद रख सकते हैं (या अधिक) । इसलिए यदि यह वर्ग आपके CF DSG फ़ाइलों से डेटा नहीं पढ़ सकता है, तो कृपया कृपया ध्यान दें कि इस श्रेणी में आपके CF DSG फ़ाइलों से डेटा नहीं पढ़ा जा सकता है।अतिरिक्त समर्थन के लिए पहुंचना

हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।  

EDDTableFromNccsvFiles

EDDTableFromNccsvFiles से डेटा एकत्र करनाएनसीसीएसवीASCII फ़ाइलें. इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।

  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।

पहली चीज GenDatasetsXml इस प्रकार के डेटासेट के लिए करता है जब आप जवाब देते हैं तो सवाल नमूना फ़ाइल की एनसीडंप जैसी संरचना को प्रिंट करता है। तो अगर आप जनरेटडाटासेट के माध्यम से पहले पाश के लिए कुछ गौफी जवाब में प्रवेश करते हैं Xml, कम से कम आप देख सकते हैं कि क्याERDDAP™फ़ाइल को पढ़ सकते हैं और देख सकते हैं कि कौन से आयाम और चर फाइल में हैं। फिर आप जेनरेटडाटासेटएक्सएमएल के माध्यम से दूसरे लूप के लिए बेहतर जवाब दे सकते हैं।

  • कब: कबERDDAP™एनसीसीएसवी डेटा फ़ाइलों को पढ़ता है, अगर यह किसी दिए गए लाइन पर त्रुटि पाता है (उदाहरण के लिए, वस्तुओं की गलत संख्या) यह एक चेतावनी संदेश लॉग करता है ("WARNING: खराब रेखा (s) डेटा की एक सूची के साथ) tolog.txt फ़ाइलऔर फिर बाकी डेटा फ़ाइल को पढ़ना जारी रखता है। इस प्रकार, समय-समय पर देखने की आपकी ज़िम्मेदारी है (या ऐसा करने के लिए एक स्क्रिप्ट लिखने) लॉग में उस संदेश के लिए। ताकि आप डेटा फ़ाइलों में समस्याओं को ठीक कर सकें।ERDDAP™इस तरह से सेट किया गया है ताकि उपयोगकर्ता सभी उपलब्ध वैध डेटा को पढ़ना जारी रख सकें, भले ही फ़ाइल की कुछ पंक्तियां त्रुटियां हों।  

EDDTableFromNOS

EDDTableFromNOS (डिप्रेषित) डेटा को एक से संभालता हैNOAA NOSस्रोत, जो उपयोग करता हैSOAP+XMLअनुरोधों और प्रतिक्रियाओं के लिए। यह बहुत विशिष्ट हैNOAANOS XML. Dataset2.xml में नमूना EDDTableFromNOS डेटासेट देखें।  

EDDTableFromOBIS

EDDTableFromOBIS एक महासागर जीवविज्ञान सूचना प्रणाली से डेटा को संभालती है (ओबीआईएस) सर्वर (था http://www.iobis.org ) । यह संभव है कि अधिक सक्रिय सर्वर नहीं हैं जो अब ओबीआईएस सर्वर सिस्टम के आउट-ऑफ-डेट प्रकार का उपयोग करते हैं।

  • ओबीआईएस सर्वर एक XML अनुरोध की उम्मीद करते हैं और XML प्रतिक्रिया वापस करते हैं।
  • चूंकि सभी ओबीआईएस सर्वर समान चरों की सेवा करते हैं (था http://iobis.org/tech/provider/questions ) , आपको एक ओबीआईएस डाटासेट स्थापित करने के लिए बहुत कुछ निर्दिष्ट नहीं करना हैERDDAP।
  • You MUST in a "creator\_email"वैश्विक में विशेषताaddAttributesचूंकि उस सूचना का उपयोग लाइसेंस के भीतर किया जाता है। SourceURL से XML प्रतिक्रिया पढ़ने के द्वारा उपयुक्त ईमेल पता पाया जा सकता है।
  • आप वैश्विक विशेषता प्राप्त करने में सक्षम हो सकते हैं या नहीं<subsetVariables> (#subsetvariables) किसी दिए गए ओबीआईएस सर्वर के साथ काम करने के लिए। यदि आप कोशिश करते हैं, तो सिर्फ एक चर प्रयास करें (उदाहरण के लिए, वैज्ञानिकनाम या जेनस) ।

EDDTableFromOBIS कंकाल 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>

EDDTableFromParquetFiles

EDDTableFromParquetFiles डेटा को संभालनालकड़ी। इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।

  • लकड़ी की छत को बहुत कुशलता से संपीड़ित करने के लिए डिज़ाइन किया गया है, इसलिए यह आपको अन्य प्रारूपों की तुलना में छोटी फ़ाइल आकार दे सकता है।
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।
  • कब: कबERDDAP™अगर यह किसी दिए गए लाइन पर एक त्रुटि पाता है तो Parquet डेटा फ़ाइलों को पढ़ता है (उदाहरण के लिए, वस्तुओं की गलत संख्या) यह एक चेतावनी संदेश लॉग करता है ("WARNING: खराब रेखा (s) डेटा की एक सूची के साथ) tolog.txt फ़ाइलऔर फिर बाकी डेटा फ़ाइल को पढ़ना जारी रखता है। इस प्रकार, समय-समय पर देखने की आपकी ज़िम्मेदारी है (या ऐसा करने के लिए एक स्क्रिप्ट लिखने) लॉग में उस संदेश के लिए। ताकि आप डेटा फ़ाइलों में समस्याओं को ठीक कर सकें।ERDDAP™इस तरह से सेट किया गया है ताकि उपयोगकर्ता सभी उपलब्ध वैध डेटा को पढ़ना जारी रख सकें, भले ही फ़ाइल की कुछ पंक्तियां त्रुटियां हों।  

EDDTableFromSOS

EDDTableFromSOS एक सेंसर अवलोकन सेवा से डेटा संभालती है (SWE/SOS) सर्वर

  • यह डेटासेट प्रकार स्टेशनों के एक समूह से डेटा एकत्र करता है जो सभी एक द्वारा सेवा प्रदान किए जाते हैंSOSसर्वर
  • स्टेशन सभी चर के समान सेट की सेवा करते हैं (हालांकि प्रत्येक स्टेशन के लिए स्रोत को सभी चरों की सेवा नहीं करनी चाहिए) ।
  • SOSसर्वर XML अनुरोध की उम्मीद करते हैं और XML प्रतिक्रिया वापस करते हैं।
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं। इसके लिए डेटासेट XML उत्पन्न करना आसान नहीं हैSOSहाथ से डेटासेट। आवश्यक जानकारी प्राप्त करने के लिए, आपको जाना चाहिएsourceUrl+ सेवाSOS&requestGetCapabilities"एक ब्राउज़र में; XML को देखें; हाथ से एक GetObservation अनुरोध करें; और अनुरोध के लिए XML प्रतिक्रिया को देखें।
  • नए प्रकार के अतिरिक्तSOSसर्वर और पुराने सर्वर में बदलाव, यह कठिन हो रहा हैERDDAP™सर्वर की प्रतिक्रियाओं से सर्वर प्रकार का स्वचालित रूप से पता लगाने के लिए। उपयोग<sosServertype> (IOOS \_NDBC, IOOS \_NOS के मूल्य के साथ,OOSTethysडब्ल्यूएचओआई) अब STRONGLY RECOMMENDED है। यदि आपके पास इस प्रकार के किसी भी डेटासेट के साथ कोई समस्या है, तो फिर से जारी करने की कोशिश करें GenerateDatasets XML के लिएSOSसर्वर उत्पन्न करना डेटासेट एक्सएमएल आपको अलग-अलग कोशिश करने देगा<जब तक आप किसी दिए गए सर्वर के लिए सही खोजने के लिए sosServertype> विकल्प।
  • SOSअवलोकन:
    • SWE (सेंसर वेब सक्षमता) औरSOS (सेंसर अवलोकन सेवा) हैंOpenGIS® मानकों। इस वेबसाइट के मानक दस्तावेज हैं।

    • The The most of theOGCवेब सर्विसेज कॉमन विशिष्टता ver 1.1.0 (OGC06-121r3) GET और POST प्रश्नों के निर्माण को कवर करता है (अनुभाग 7.2.3 और अनुभाग 9 देखें) ।

    • यदि आप एक प्राप्त करने की क्षमता xml अनुरोध भेजते हैं तोSOSसर्वर (sourceUrl"?service=SOS&requestGetCapabilities") , आपको स्टेशनों की सूची और मनाया जाने वाला एक xml परिणाम मिलता है गुण जो उनके पास डेटा है।

    • एक मनायाProperty एक संपत्ति के लिए एक औपचारिक URI संदर्भ है। उदाहरण के लिए, urn:ogc:phenomenon: देशांतर: wgs84 या https://mmisw.org/ont/cf/parameter/sea\\_water\\_temperature

    • एक मनायाProperty एक चर नहीं है।

    • एक से अधिक चर में वही देखा जा सकता है संपत्ति (उदाहरण के लिए, अंदर टेम्प और बाहर दोनों को देखा जा सकता है संपत्ति https://mmisw.org/ont/cf/parameter/air\\_temperature ) ।

    • यदि आप एक जांच xml अनुरोध भेजने के लिए एकSOSसर्वर, आपको प्रतिक्रिया, फील्ड इकाइयों और डेटा में फ़ील्ड नामों के विवरण के साथ xml परिणाम मिलता है। क्षेत्र के नामों में लम्बाई, अक्षांश, गहराई शामिल होगी (शायद) समय

    • प्रत्येकdataVariableEDDTableFromSOSएक "observedProperty" विशेषता शामिल होना चाहिए, जो उस परिवर्तनीय को प्राप्त करने के लिए सर्वर से अनुरोध किया जाना चाहिए कि मनायाProperty की पहचान करता है। अक्सर, कईdataVariables एक ही समग्र मनायाProperty सूची होगा।

    • प्रत्येक के लिए डेटाटाइपdataVariableसर्वर द्वारा निर्दिष्ट नहीं किया जा सकता है। यदि हां, तो आपको सर्वर से XML डेटा प्रतिक्रियाओं को देखना होगा और उचित निर्दिष्ट करना होगा [<Datatype>s (#datatype) मेंERDDAP™डेटासेटdataVariableपरिभाषाएं।

    • (इसे लिखने के समय) कुछSOSसर्वर एक से अधिक अवलोकन अनुरोधों का जवाब देते हैं संपत्ति केवल देखी गई संपत्ति के पहले के लिए परिणाम वापस कर रही है। (कोई त्रुटि संदेश!) निर्माता पैरामीटर अनुरोध देखें अक्सर पूछे जाने वाले प्रश्न

  • EDDTableFromSOSस्वचालित रूप से जोड़ता है

    station\_id, longitude, latitude
    डेटासेट के वैश्विक गुणों के लिए जब डेटासेट बनाया जाता है।

  • SOSसर्वर आम तौर पर एक्सप्रेसयूनिटसाथUCUMप्रणाली। सबसे ज्यादाERDDAP™सर्वर एक्सप्रेस इकाइयों के साथUDUNITSप्रणाली। यदि आपको दो प्रणालियों के बीच कन्वर्ट करने की आवश्यकता है, तो आप उपयोग कर सकते हैंERDDAPUCUM इकाइयों को / से परिवर्तित करने के लिए वेब सेवाUDUNITS

EDDTableFromSOSकंकाल 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>

EDDTableFromThreddsFiles

EDDTableFromThreddsFiles (विकृत) कई चर के साथ डेटा फ़ाइलों को एकत्रित करता है, प्रत्येक एक या अधिक साझा आयाम के साथ (उदाहरण के लिए, समय, ऊंचाई (या गहराई) अक्षांश) , और एक द्वारा सेवा कीथर्डOPeNDAPसर्वर

  • यह डेटासेट प्रकार है डिप्रेषित । नए और अधिक सामान्य समाधान का उपयोग करना हैकैश EDDTable विकल्प सेफिल (या एक संस्करण) , जो दूरस्थ फ़ाइलों की एक स्थानीय प्रतिलिपि बनाता है और स्थानीय फ़ाइलों से डेटा प्रदान करता है। The The most of the<कैशFromUrl> विकल्प किसी भी वेब आधारित स्रोत से किसी भी प्रकार के सारणीबद्ध डेटा फ़ाइल के साथ इस्तेमाल किया जा सकता है जो फ़ाइलों की निर्देशिका जैसी सूची प्रकाशित करता है। **
    यदि आप कुछ कारणों से काम नहीं कर सकते हैं तो क्रिस को ईमेल करें। जॉन at noaa.gov. यदि 2020 से पहले कोई शिकायत नहीं है, तो इस डेटासेट प्रकार को हटाया जा सकता है। **
  • हम दृढ़ता से उपयोग करने की सलाह देते हैंजनगणना Xml कार्यक्रमका एक मोटे ड्राफ्ट बनाने के लिएdatasets.xmlइस डेटासेट के लिए भाग लें। तब आप इसे ठीक करने के लिए संपादित कर सकते हैं।
  • अधिकांश मामलों में, प्रत्येक फ़ाइल में बाईं ओर एकाधिक मान होते हैं। (पहला) आयाम, उदाहरण के लिए, समय।
  • अक्सर फ़ाइलें (लेकिन नहीं करना चाहिए) अन्य आयामों के लिए एक एकल मान है (उदाहरण के लिए, ऊंचाई (या गहराई) अक्षांश) ।
  • फ़ाइलों में अतिरिक्त आयाम के साथ वर्ण चर हो सकता है (उदाहरण के लिए, nCharacter) ।
  • THREDDS सर्वर को URL में "/thredds/" द्वारा पहचाना जा सकता है। उदाहरण के लिए,
    https://www.ncei.noaa.gov/thredds/catalog/uv/6h\\_strs\\_agg/catalog.html
  • THREDDS सर्वर विभिन्न स्थानों में सूची है। इस वर्ग की आवश्यकता है कि यूआरएल में "/thredds/catalog/" शामिल हैं। आप आमतौर पर रूट कैटलॉग में एक ब्राउज़र में शुरू करके इस परिवर्तनीय को पा सकते हैं, और फिर वांछित subcatalog पर क्लिक कर सकते हैं।
  • इस वर्ग ने THREDDS द्वारा सेवा की गई catalog.xml फ़ाइलों को पढ़ा है, जिसमें सूची की गई है।<कैटलॉग (अतिरिक्त catalog.xml उप फ़ाइल के संदर्भ) और<डेटासेट> (डेटा फाइलें) ।
  • The The most of the<फ़ाइलDir> सेटिंग को नजरअंदाज कर दिया गया है। चूंकि यह वर्ग डाउनलोड करता है और प्रत्येक दूरस्थ डेटा फ़ाइल की स्थानीय प्रति बनाता है,ERDDAP™फाइल को मजबूर करता है देना बड़ाParentDirectory साइटमैप datasetID /।
  • के लिए<sourceUrl>, THREDDS सर्वर में डेटासेट के लिए catalog.xml फ़ाइल के URL का उपयोग करें, उदाहरण के लिए: इस URL के लिए जिसका उपयोग वेब ब्राउज़र में किया जा सकता है। https://data.nodc.noaa.gov/thredds/catalog/nmsp/wcos/catalog.html \[2020-10-21 यह सर्वर अब विश्वसनीय नहीं है।\], उपयोग<sourceUrl> https://data.nodc.noaa.gov/thredds/catalog/nmsp/wcos/catalog.xml </sourceUrl> (लेकिन इसे एक पंक्ति में डाल दिया) ।
  • चूंकि यह वर्ग हमेशा डाउनलोड करता है और प्रत्येक दूरस्थ डेटा फ़ाइल की स्थानीय प्रतिलिपि बनाता है, इसलिए आपको कभी भी इस डेटासेट को लपेटना नहीं चाहिए।EDDTableCopy
  • यह डेटासेट प्रकार एक वैकल्पिक, शायद ही कभी इस्तेमाल किया, विशेष टैग का समर्थन करता है,<विशेष मोड> मोड </specialMode> जिसका उपयोग यह निर्दिष्ट करने के लिए किया जा सकता है कि विशेष, हार्ड-कोडित नियमों का उपयोग यह निर्धारित करने के लिए किया जाना चाहिए कि कौन से फ़ाइलों को सर्वर से डाउनलोड किया जाना चाहिए। वर्तमान में, एकमात्र मान्य मोड SAMOS है जो डेटासेट के साथ प्रयोग किया जाता है https://tds.coaps.fsu.edu/thredds/catalog/samos केवल अंतिम संस्करण संख्या के साथ फ़ाइलों को डाउनलोड करने के लिए।
  • इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesयह कैसे काम करता है और इसका उपयोग कैसे किया जाता है, इस बारे में जानकारी के लिए।
  • 1D, 2D, 3D और 4D उदाहरणों के लिए देखेंEDDTableFromNcFiles।  

EDDTableFromWFSफ़ाइलें

EDDTableFromWFSफ़ाइलें (डिप्रेषित) सभी डेटा की एक स्थानीय प्रति बनाता हैArcGISMapServerWFSइसलिए डेटा को फिर से संरक्षित किया जा सकता हैERDDAP™उपयोगकर्ता

  • आपको एक विशेष स्वरूपित निर्दिष्ट करने की आवश्यकता हैsourceUrlवैश्विक विशेषता बताने के लिएERDDAP™सर्वर से सुविधा जानकारी का अनुरोध कैसे करें। कृपया इस उदाहरण का उपयोग टेम्पलेट के रूप में करें:
    <att name="sourceUrl">http://*someUrl/dir1/dir2*/MapServer/WFSServer?request=GetFeature&amp;service=WFS&amp;typename=aasg:BoreholeTemperature&amp;format=&quot;text/xml;%20subType=gml/3.1.1/profiles/gmlsf/1.0.0/0"</att>  

(लेकिन यह सब एक पंक्ति में डाल दिया)

  • आपको बताने के लिए एक विशेष वैश्विक विशेषता जोड़ने की आवश्यकता हैERDDAP™डेटा के टुकड़ों के नाम की पहचान कैसे करें जिसे डाउनलोड किया जाना चाहिए। यह संभवतः सभी EDDTableFrom के लिए काम करेगाWFSफ़ाइल डेटासेट:
    <att name="rowElementXPath">/wfs:FeatureCollection/gml:featureMember</att>
  • चूंकि यह वर्ग हमेशा डाउनलोड करता है और प्रत्येक दूरस्थ डेटा फ़ाइल की स्थानीय प्रतिलिपि बनाता है, इसलिए आपको कभी भी इस डेटासेट को लपेटना नहीं चाहिए।EDDTableCopy
  • इस वर्ग के सुपरक्लास को देखें,EDDTableFromFilesकैसे इस वर्ग के काम करता है और इसका उपयोग करने के बारे में अतिरिक्त जानकारी के लिए।  

EDDTableAggregateRows

EDDTableAggregateRows "child" EDDTable डेटासेट के एक समूह से EDDTable डेटासेट बना सकते हैं।

  • यहां EDDTableAggregateRows के लिए कुछ उपयोग दिए गए हैं:
    • आप EDDTableAggregateRows Dataset को दो अलग-अलग प्रकार की फाइलों या डेटा स्रोतों से बना सकते हैं, उदाहरण के लिए, पिछले महीने के अंत तक डेटासेट के साथ डेटासेट में संग्रहीत किया गया।.ncCF फ़ाइलों और वर्तमान महीने के लिए डेटा के साथ एक डेटासेट एक संबंधिक डेटाबेस में संग्रहीत।
    • आप स्रोत फ़ाइलों में बदलाव के साथ निपटने के लिए EDDTableAggregateRows Dataset बना सकते हैं (उदाहरण के लिए, टाइम प्रारूप बदल गया, या एक परिवर्तनीय नाम बदल गया, या डेटा प्रकारscale\_factor/add\_offsetबदलना) । इस मामले में, एक बच्चा परिवर्तन से पहले की गई फ़ाइलों से डेटा प्राप्त करेगा और दूसरा बच्चा परिवर्तन के बाद की गई फ़ाइलों से डेटा प्राप्त करेगा। EDDTableAggregateRows का यह उपयोग करने का विकल्प हैएनसीएमएलयाNCO। जब तक फ़ाइल नाम में कोई विशिष्ट विशेषता नहीं है ( इसलिए आप उपयोग कर सकते हैं)<फ़ाइलNameRegex> यह निर्धारित करने के लिए कि कौन सी फ़ाइल किस बच्चे के डेटासेट से संबंधित है, आपको शायद विभिन्न निर्देशिकाओं में दो बच्चे डेटासेट के लिए फ़ाइलों को स्टोर करने की आवश्यकता है।
    • आप एक EDDTableAggregateRows Dataset बना सकते हैं जिसमें एक या अधिक समान लेकिन अलग-अलग डेटासेट के चर का एक साझा सबसेट होता है, उदाहरण के लिए, एक डेटासेट जो प्रोफ़ाइल डेटासेट के संयोजन से एक प्रोफाइल डेटासेट बनाता है, एक टाइमसेरीप्रोफ़ाइल डेटासेट और एक ट्रेजेक्टरीप्रोफाइल डेटासेट (जिसमें कुछ अलग वैरिएबल और कुछ वैरिएबल्स आम तौर पर होते हैं - जिस मामले में आपको बच्चे के डेटासेट के लिए विशेष वेरिएंट बनाना होगा, सिर्फ इन-आम वेरिएबल के साथ) ।
    • आपके पास कई स्टैंडअलोन डेटासेट हो सकते हैं, प्रत्येक में एक ही प्रकार के डेटा के साथ लेकिन एक अलग स्टेशन से। आप उन डेटासेट को बरकरार रख सकते हैं, लेकिन एक EDDTableAggregateRows डेटासेट भी बना सकते हैं, जिसमें सभी स्टेशनों से डेटा है - प्रत्येक बच्चे डेटासेट एक सरल हो सकता है।EDDTableFromErddap, जो मौजूदा स्टेशन डेटासेट में से एक को इंगित करता है। यदि आप ऐसा करते हैं, तो प्रत्येक EDDTableFromErddap डेटासेट को अलग-अलग करेंdatasetIDमूल स्टैंडअलोन डेटासेट की तुलना में, उदाहरण के लिए, मूल में "बाल" को गिरफ्तार करकेdatasetID।
  • प्रत्येक बच्चे<डेटासेट> का निर्दिष्ट एक पूर्ण डेटासेट होना चाहिए, जैसे कि यह एक स्टैंड-अलोन डेटासेट था। प्रत्येक होना चाहिएdataVariablesउसी क्रम में, उसी क्रम में, उसी के साथdestinationNames,डेटा प्रकार,missing\_values,\_FillValues, औरयूनिट। EDDTableAggregateRows Dataset के लिए प्रत्येक चर के लिए मेटाडाटा पहले बच्चे डेटासेट में चर से आता है, लेकिन EDDTableAggregateRows अद्यतन करेगा।actual\_rangeमेटाडाटा सभी बच्चों के लिए वास्तविक रेंज होना चाहिए।
  • सिफारिश: प्रत्येक बच्चे के डेटासेट स्टैंड-अलोन डेटासेट के रूप में काम करते हैं। फिर EDDTableAggregateRows Dataset को काटने और चिपकाने की कोशिश करेंdatasets.xmlप्रत्येक के लिए नए EDDTableAggregate में भाग लें पंक्तियां डेटासेट।
  • डेटासेट डिफ़ॉल्ट क्रम -- चाइल्ड डेटासेट का आदेश परिणामों के समग्र डिफ़ॉल्ट प्रकार के आदेश को निर्धारित करता है। बेशक, उपयोगकर्ता अपील करके परिणामों के दिए गए सेट के लिए अलग-अलग ऑर्डर का अनुरोध कर सकते हैं औरorderBy (" चरों की अल्पसंख्यक सूची ") उनके प्रश्नों के अंत तक।
  • "source"वैश्विक गुणEDDTableAggregateRows के लिए संयुक्त वैश्विक हैप्रथम बच्चे डेटासेट से योगदान करता है। EDDTableAggregate पंक्तियाँ वैश्विक हो सकती हैं<addAttributes> अतिरिक्त वैश्विक विशेषताओं को प्रदान करने या स्रोत वैश्विक विशेषताओं को ओवरराइड करने के लिए।

EDDTableAggregate पंक्तियों कंकाल XML

  <dataset type="EDDTableAggregateRows" datasetID\="..." active\="..." >
      <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
      <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
      <accessibleViaFiles>true|false(default)</accessibleViaFiles>
        <!-- 0 or 1 -->
      <reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
      <updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. -->
      <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
      <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
      <addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
      <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
      <iso19115File>...</iso19115File> <!-- 0 or 1 -->
      <onChange>...</onChange> <!-- 0 or more -->
      <dataset>...</dataset> <!-- 1 or more -->
  </dataset>

EDDTableCopy

EDDTableCopy कई प्रकार के EDDTable डेटासेट की स्थानीय प्रतिलिपि बना सकते हैं और फिर स्थानीय प्रतिलिपि से डेटा को जल्दी से संरक्षित कर सकते हैं।

  • EDDTableCopy (और ग्रिड डेटा के लिए,EDDGridकॉपी) उपयोग करना बहुत आसान है और एक बहुत प्रभावी है दूरस्थ डेटा स्रोतों से डेटा की सेवा के साथ कुछ सबसे बड़ी समस्याओं का समाधान:
    • दूरस्थ डेटा स्रोत से डेटा तक पहुंच धीमी हो सकती है।
      • क्योंकि वे स्वाभाविक रूप से धीमा हो सकते हैं (उदाहरण के लिए, सर्वर का एक अक्षम प्रकार) ,
      • क्योंकि वे बहुत सारे अनुरोधों से अभिभूत हैं,
      • या क्योंकि आपका सर्वर या रिमोट सर्वर बैंडविड्थ सीमित है।
    • दूरस्थ डेटासेट कभी-कभी अनुपलब्ध है (फिर, विभिन्न कारणों के लिए) ।
    • डेटा के लिए एक स्रोत पर निर्भर करना अच्छी तरह से स्केल नहीं करता है (उदाहरण के लिए, जब कई उपयोगकर्ता और कईERDDAPइसका उपयोग) ।  
  • यह कैसे काम करता है - EDDTableCopy स्वचालित रूप से डेटा की एक स्थानीय प्रतिलिपि बनाने और स्थानीय प्रतिलिपि से डेटा की सेवा करके इन समस्याओं को हल करता है।ERDDAP™बहुत जल्दी स्थानीय प्रतिलिपि से डेटा की सेवा कर सकते हैं। और स्थानीय प्रतिलिपि का उपयोग करके दूरस्थ सर्वर पर बोझ को राहत देता है। और स्थानीय प्रतिलिपि मूल का बैकअप है, जो स्थिति में कुछ मूल होता है।

डेटासेट की स्थानीय प्रतिलिपि बनाने के बारे में कुछ नया नहीं है। यहाँ नया क्या है कि यह वर्ग इसे बनाता है\*आसान\*बनाना और बनाना\*रखरखाव\*डेटा की एक स्थानीय प्रतिलिपि\*विविधता\*दूरस्थ डेटा स्रोतों के प्रकार और\*मेटाडाटा\*डेटा की प्रतिलिपि बनाते समय।

EDDTableCopy बनाम<कैशFromUrl>

<CashFromUrl> EDDTableCopy का विकल्प है। वे अलग-अलग काम करते हैं।

  • EDDTable एक दूरस्थ सेवा से डेटा के टुकड़ों का अनुरोध करके और स्थानीय फ़ाइलों में उन टुकड़ों को संग्रहीत करके काम करता है। इस प्रकार, EDDTableCopy कुछ मामलों में उपयोगी है जहां डेटा दूरस्थ सेवा के माध्यम से सुलभ है।
  • [<CashFromUrl> (#cachefromurl) दूरस्थ वेबसाइट पर सूचीबद्ध मौजूदा फ़ाइलों को डाउनलोड करें।<कैशFromUrl> का उपयोग करना आसान है और अधिक विश्वसनीय है क्योंकि यह आसानी से बता सकता है कि एक नई दूरस्थ डेटा फ़ाइल कब है या जब एक दूरस्थ डेटा फ़ाइल बदल गई है और इस प्रकार इसे डाउनलोड करने की आवश्यकता है।

यदि ऐसी स्थितियां हैं जहां EDDTableCopy या EDDTableCopy<CashFromUrl> का उपयोग किया जा सकता है, उपयोग किया जा सकता है<CashFromUrl> क्योंकि यह आसान और विश्वसनीय है।  

<निकासी नाम और gt;

EDDTable प्रतिलिपि दूरस्थ डेटासेट से डेटा के टुकड़ों का अनुरोध करके डेटा की स्थानीय प्रतिलिपि बनाती है। EDDTable प्रतिलिपि यह निर्धारित करती है कि कौन-कौन से हिस्से को अनुरोध करके अनुरोध करने के लिए अनुरोध किया जाता है () मूल्य<निष्कर्षण गंतव्यनाम (में निर्दिष्टdatasets.xmlनीचे देखें) , जो दूरस्थ डेटासेट में चर के स्थानबद्ध गंतव्य नाम हैं। उदाहरण के लिए,

    <extractDestinationNames>drifter profile</extractDestinationNames>  

drifter=tig17,profile=1017, drifter=tig17,profile=1095, ... drifter=une12,profile=1223, drifter=une12,profile=1251, drifter=une12,profile=1251, ....

उन स्थितियों में जहां एक स्तंभ (उदाहरण के लिए, प्रोफ़ाइल) उन सभी हो सकते हैं जिन्हें विशिष्ट रूप से डेटा की पंक्तियों के एक समूह की पहचान करने की आवश्यकता होती है, यदि बहुत बड़ी संख्या में हैं, उदाहरण के लिए, प्रोफाइल, यह भी एक अतिरिक्त उद्धरण निर्दिष्ट करने के लिए उपयोगी हो सकता है गंतव्य नाम (उदाहरण के लिए, drifter) जो प्रोफाइल को विभाजित करने के लिए कार्य करता है। यह किसी दिए गए निर्देशिका में कम डेटा फ़ाइलों की ओर जाता है, जिससे तेजी से पहुंच हो सकती है।

स्थानीय फ़ाइलें

डेटा का प्रत्येक हिस्सा एक अलग में संग्रहीत किया जाता हैNetCDFएक subdirectory में फ़ाइल बड़ाParentDirectory साइटमैप datasetID / (यथा निर्दिष्टसाइटमैप) । सभी के लिए एक उपनिर्देशिका स्तर है लेकिन अंतिम निकालने के लिए गंतव्य नाम है। उदाहरण के लिए, tig17+1017 के लिए डेटा में संग्रहीत किया जाएगा बड़ाParentDirectory /copy/sampleDataset/tig17/1017.nc। उदाहरण के लिए, une12+1251 के लिए डेटा में संग्रहीत किया जाएगा बड़ाParentDirectory /copy/sampleDataset/une12/1251.nc। डेटा मूल्यों से बनाए गए निर्देशिका और फ़ाइल नाम को उन्हें फ़ाइल नाम-सुरक्षित बनाने के लिए संशोधित किया गया है (उदाहरण के लिए, अंतरिक्ष को "x20" द्वारा प्रतिस्थापित किया जाता है।) - यह वास्तविक डेटा को प्रभावित नहीं करता है।  

नया डेटा

प्रत्येक बार EDDTable प्रतिलिपि को फिर से लोड किया गया है, यह देखने के लिए दूरस्थ डेटासेट की जांच करता है कि क्या अलग-अलग हिस्से उपलब्ध हैं। यदि डेटा के एक हिस्से के लिए फ़ाइल पहले से मौजूद नहीं है, तो एक अनुरोध प्राप्त करने के लिए चंक को एक कतार में जोड़ा जाता है।ERDDAP'टास्कथ्रेड डेटा के टुकड़ों, एक-एक-एक-एक-एक-एक के लिए सभी प्रश्न अनुरोधों को संसाधित करता है। आप कार्य के लिए आंकड़े देख सकते हैंथ्रेड की गतिविधि परस्थिति पृष्ठऔर मेंदैनिक रिपोर्ट। (हाँ,ERDDAP™इस प्रक्रिया के लिए कई कार्यों को असाइन कर सकता है, लेकिन यह बहुत सारे दूरस्थ डेटा स्रोत की बैंडविड्थ, मेमोरी और सीपीयू समय का उपयोग करेगा, और स्थानीय लोगों के बहुत सारेERDDAPबैंडविड्थ, मेमोरी और सीपीयू समय, जिनमें से कोई भी अच्छा विचार नहीं है।)

ध्यान दें: पहली बार एक EDDTableCopy लोड हो रहा है, (अगर सब ठीक हो जाता है) डेटा के बहुत सारे अनुरोधों को टाटथ्रेड के कतार में जोड़ा जाएगा, लेकिन कोई स्थानीय डेटा फ़ाइलों का निर्माण नहीं किया जाएगा। इसलिए निर्माता विफल हो जाएगा लेकिन टास्कथ्रेड स्थानीय फ़ाइलों को काम करने और बनाने के लिए जारी रहेगा। यदि सब ठीक हो जाता है, तो टास्कथ्रेड कुछ स्थानीय डेटा फाइलें बना देगा और डेटासेट को फिर से लोड करने का अगला प्रयास करेगा। (~15 मिनट) शुरू में डेटा की एक सीमित राशि के साथ सफल होगा।

नोट: स्थानीय डेटासेट के कुछ डेटा होते हैं और आपके डेटा में दिखाई देते हैंERDDAPयदि दूरस्थ डेटासेट अस्थायी रूप से या स्थायी रूप से सुलभ नहीं है, तो स्थानीय डेटासेट अभी भी काम करेगा।

चेतावनी: यदि दूरस्थ डेटासेट बड़ा है और/या दूरस्थ सर्वर धीमी है (यह समस्या नहीं है?) , यह एक पूर्ण स्थानीय प्रतिलिपि बनाने के लिए एक लंबे समय तक ले जाएगा। कुछ मामलों में, आवश्यक समय अस्वीकार्य होगा। उदाहरण के लिए, T1 लाइन पर 1 टीबी डेटा को ट्रांसमिट करना (0.15 जीबी / एस) इष्टतम परिस्थितियों में कम से कम 60 दिन लगते हैं। इसके अलावा, यह दूरस्थ और स्थानीय कंप्यूटर पर बैंडविड्थ, मेमोरी और सीपीयू टाइम का उपयोग करता है। समाधान दूरस्थ डेटा सेट के प्रशासक को एक हार्ड ड्राइव मेल करना है ताकि वह डेटासेट की एक प्रति बना सके और हार्ड ड्राइव को आपके पास भेज सकें। उस डेटा को शुरुआती बिंदु के रूप में उपयोग करें और EDDTableCopy उस पर डेटा जोड़ देगा। (यही कारण है कि अमेज़ॅन की EC2 क्लाउड सर्विस ने समस्या को संभालने के लिए इस्तेमाल किया, भले ही उनके सिस्टम में बैंडविड्थ बहुत अधिक हो।)

WARNING: यदि मूल्यों का कोई संयोजन दूरस्थ डेटासेट से गायब हो जाता है, तो EDDTableCopy स्थानीय कॉपी की गई फ़ाइल को हटा नहीं देता है। यदि आप चाहते हैं, तो आप इसे स्वयं हटा सकते हैं।

टेबलकॉपी<चेकSourceData>

The The most of thedatasets.xmlइस डेटासेट के लिए एक वैकल्पिक टैग हो सकता है

    <checkSourceData>true</checkSourceData>  

डिफ़ॉल्ट मान सही है। यदि आप इसे झूठ में सेट करते हैं, तो डेटासेट कभी भी यह देखने के लिए स्रोत डेटासेट की जांच नहीं करेगा कि क्या अतिरिक्त डेटा उपलब्ध है।  

  1. बनाना<डेटासेट> प्रवेश (देशी प्रकार, नहीं EDDTableCopy) दूरस्थ डेटा स्रोत के लिए। यह सही ढंग से काम कर रहा है, जिसमें सभी वांछित मेटाडाटा शामिल हैं।
  2. यदि यह बहुत धीमा है, तो इसे EDDTableCopy डेटासेट में लपेटने के लिए XML कोड जोड़ें।
    • एक अलगdatasetID (शायद बदलकरdatasetIDपुरानेdatasetIDथोड़ा) ।
    • कॉपी करें<सुलभ To><ReloadEveryNMinutes> और<onChange> दूरस्थ EDDTable के XML से EDDTableCopy के XML में। (EDDTableCopy मामले के लिए उनके मूल्यों; आंतरिक डेटासेट के लिए उनके मूल्यों अप्रासंगिक हो जाते हैं।)
    • बनाना<निकालने का गंतव्यनाम> टैग (ऊपर देखें) ।
    • <OrderExtractBy> दूरस्थ डेटासेट में गंतव्य परिवर्तनीय नामों की एक वैकल्पिक स्थान अलग सूची है। जब डेटा के प्रत्येक हिस्से को दूरस्थ सर्वर से डाउनलोड किया जाता है, तो इस खंड को इन चरों द्वारा क्रमबद्ध किया जाएगा। (पहले चर द्वारा, फिर दूसरे चर द्वारा यदि पहला चर बंधा हुआ है, तो ...) । कुछ मामलों में,ERDDAP™यदि सूची में पहला परिवर्तनीय एक संख्यात्मक चर है तो स्थानीय डेटा फ़ाइलों से डेटा को तेजी से निकालने में सक्षम होगा ("time"एक संख्यात्मक चर के रूप में गिनती) । लेकिन इन चरों को एक तरह से चुनें जो डेटासेट के लिए उपयुक्त है।
  3. ERDDAP™डेटा की एक स्थानीय प्रतिलिपि बनाने और बनाए रखने के लिए।  
  • चेतावनी: EDDTableCopy मान लेता है कि प्रत्येक भाग के लिए डेटा मान कभी नहीं बदलता है। अगर वे करते हैं, तो आपको मैन्युअल रूप से चंकने वाली फ़ाइलों को हटाने की आवश्यकता है बड़ाParentDirectory साइटमैप datasetID / जो बदल गया है औरझंडाडेटासेट को फिर से लोड किया जाना चाहिए ताकि हटाए गए हिस्से को प्रतिस्थापित किया जा सके। यदि आपके पास डेटासेट के लिए एक ईमेल सदस्यता है, तो आपको दो ईमेल मिलेंगे: एक जब डेटासेट पहली बार फिर से लोड हो जाता है और डेटा कॉपी करना शुरू कर देता है, और दूसरा जब डेटासेट फिर से लोड हो जाता है (स्वचालित रूप से) और नए स्थानीय डेटा फ़ाइलों का पता लगाता है।  
  • मेटाडाटा बदलें -- यदि आपको कोई बदलाव करना हैaddAttributesया स्रोत डेटासेट से जुड़े चर के आदेश को बदलने:
    1. परिवर्तनaddAttributesमें स्रोत डेटासेट के लिएdatasets.xml, आवश्यकतानुसार।
    2. प्रतिलिपिबद्ध फ़ाइलों में से एक को हटा दें।
    3. एक सेटझंडातुरंत डेटासेट को पुनः लोड करने के लिए। यदि आप एक ध्वज का उपयोग करते हैं और आपके पास डेटासेट के लिए एक ईमेल सदस्यता है, तो आपको दो ईमेल मिलेंगे: एक जब डेटासेट पहली बार फिर से लोड हो जाता है और डेटा कॉपी करना शुरू कर देता है, और दूसरा जब डेटासेट फिर से लोड हो जाता है (स्वचालित रूप से) और नए स्थानीय डेटा फ़ाइलों का पता लगाता है।
    4. हटाई गई फ़ाइल को नए मेटाडाटा के साथ फिर से बनाया जाएगा। यदि स्रोत डेटासेट कभी अनुपलब्ध है, तो EDDTableCopy डेटासेट को पुनर्जन्मित फ़ाइल से मेटाडाटा मिलेगा, क्योंकि यह सबसे छोटा फ़ाइल है।  
  • EDDGridकॉपीEDDTableCopy के समान है, लेकिन ग्रिड डेटासेट के साथ काम करता है।

EDDTableCopy कंकाल XML

  <dataset type="EDDTableCopy" datasetID\="..." active\="..." >
      <accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
      <graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
      <accessibleViaFiles>true|false(default)</accessibleViaFiles>
        <!-- 0 or 1 -->
      <reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
      <defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
      <defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
      <addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
      <fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
      <iso19115File>...</iso19115File> <!-- 0 or 1 -->
      <onChange>...</onChange> <!-- 0 or more -->
      <extractDestinationNames>...</extractDestinationNames> <!-- 1 -->
      <orderExtractBy>...</orderExtractBy> <!-- 0 or 1 -->
      <fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or false
        (the default)) -->
      <checkSourceData>...</checkSourceData> <!-- 0 or 1 -->
      <dataset>...</dataset> <!-- 1 -->
  </dataset>

विवरण

यहाँ सामान्य टैग और विशेषताओं के विस्तृत विवरण दिए गए हैं।

<AngularDegreeUnits>

  • [ ** <कोणीयDegreeUnits> ** ] (#angulardegreeunits) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlजिसमें इकाइयों के तारों की एक अल्पसंख्यक सूची शामिल है जो कि इकाइयों के तारों की सूची होती है।ERDDAP™कोणीय डिग्री इकाइयों के रूप में इलाज करना चाहिए। यदि एक चर इन इकाइयों में से एक है,tabledap'orderByMeanफिल्टर एक विशेष तरीके से मतलब की गणना करेगा, फिर -180 से 180 तक के मूल्य के रूप में इस अर्थ की रिपोर्ट करेगा। देखेंERDDAPवर्तमान डिफ़ॉल्ट सूची के लिए EDStatic.java स्रोत कोड फ़ाइल। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा

<AngularDegreeTrueUnits>

  • [ ** <कोणीय डिग्रीTrueUnits> ** ] (#angulardegreetrueunits) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlजिसमें इकाइयों के तारों की एक अल्पसंख्यक सूची शामिल है जो कि इकाइयों के तारों की सूची होती है।ERDDAP™कोणीय डिग्री वास्तविक इकाइयों के रूप में इलाज करना चाहिए। यदि एक चर इन इकाइयों में से एक है,tabledap'orderByMeanफिल्टर एक विशेष तरीके से मतलब की गणना करेगा, फिर 0 से 360 तक मूल्य के रूप में इस बीच रिपोर्ट करेगा। देखेंERDDAPवर्तमान डिफ़ॉल्ट सूची के लिए EDStatic.java स्रोत फ़ाइल। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा।  

<सामान्य मानक नाम और GT;

  • [ ** <सामान्य StandardNames ** ] (#commonstandardname) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlआम की एक अल्पसंख्यक सूची निर्दिष्ट करने के लिएCF मानक नाम। E.g.
    <commonStandardNames>air\\_pressure, ..., wind\\_to\\_direction</commonStandardNames>  

इस सूची का उपयोग DataProviderForm3.html में उपयोगकर्ताओं की सुविधा के रूप में किया जाता है। यदि आप इस जानकारी को प्रदान करना चाहते हैंdatasets.xmlवर्तमान डिफ़ॉल्ट सूची को कॉपी करके शुरू करें<DEFAULT \_commonStandardNames> मेंERDDAP' \[tomcat\]/ webapps/erddap/WEB-INF/classes/gov/noaa/pfel/erddap/util/message.xml फ़ाइल.  

<कैशमिन्यूट एंड GT;

  • [ ** <कैश मिनट> ** ] (#cachemins) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlउम्र निर्दिष्ट करने के लिए (मिनट) जिस पर कैश में फ़ाइलों को हटा दिया जाना चाहिए (डिफ़ॉल्ट=60) । E.g.
    <cacheMinutes>60</cacheMinutes>  

सामान्य तौर पर, केवल छवि फ़ाइलों (क्योंकि समान छवियों को अक्सर बार-बार अनुरोध किया जाता है) और.ncफ़ाइलें (क्योंकि उन्हें उपयोगकर्ता को भेजने से पहले पूरी तरह से बनाया जाना चाहिए) कैश्ड हैं। हालांकि ऐसा लग सकता है कि किसी दिए गए अनुरोध की तरह हमेशा उसी प्रतिक्रिया को वापस करना चाहिए, यह सच नहीं है। उदाहरण के लिए, एकtabledapअनुरोध जिसमें समय शामिल है> कुछ समय डेटासेट के लिए आने पर नया डेटा बदल जाएगा। और एक ग्रिडडैप अनुरोध जिसमें शामिल है\[अंतिम\]जब नया डेटा डेटा सेट के लिए आता है तो समय आयाम बदल जाएगा। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा। पहलेERDDAP™v2.00, यह सेटअप.xml में निर्दिष्ट किया गया था, जो अभी भी अनुमति है लेकिन हतोत्साहित है।  

<InterpolateRequestCSVExample>

  • [ ** <InterpolateRequestCSVExample ** ] (#changinginterpolaterequestcsvexample) एक के भीतर एक OPTIONAL टैग है<erddapDatasets टैग मेंdatasets.xml \[शुरूERDDAP™v2.10\]जिसमें एक उदाहरण होता है जो इंटरप्लेट कनवर्टर के वेब पेज पर दिखाया जाएगा। डिफ़ॉल्ट मान है: jplmuRSST41/analysed \_sst/Bilinear / 4।

<ConvertinterpolateDatasetIDVariableList>

  • [ ** <InterpolateDatasetIDVariableलिस्ट> ** ] (#changinginterpolatedatasetidvariablelist) एक के भीतर एक OPTIONAL टैग है<erddapDatasets टैग मेंdatasets.xml \[शुरूERDDAP™v2.10\]जिसमें CSV की सूची शामिल हैdatasetIDपरिवर्तनीय नाम उदाहरण जो इंटरप्लेट कनवर्टर के वेब पेज द्वारा सुझावों के रूप में इस्तेमाल किया जाएगा। डिफ़ॉल्ट मान है: jplmuRSST41/analysed \_sst।

<ConvertTopublicSourceUrl>

  • [ ** <ConvertTopublicSourceUrl> ** ] (#converttopublicsourceurl) एक के भीतर एक OPTIONAL टैग है<erddapDatasets टैग मेंdatasets.xmlजिसमें एक "से" और "से" गुण होता है, जो बताता है कि मिलान करने वाले स्थानीय को कैसे परिवर्तित किया जाएsourceUrl (आमतौर पर आईपी संख्या) जनता मेंsourceUrl (डोमेन नाम) "से" होना चाहिए\[कुछ\]//\[कुछ\]/ इन टैगों में से 0 या अधिक हो सकते हैं। अधिक जानकारी के लिए देखें<sourceUrl> (#sourceurl) । उदाहरण के लिए,
    <convertToPublicSourceUrl from="https://192.168.31.18/" to="https://oceanwatch.pfeg.noaa.gov/" />  

स्थानीय मिलान करनाsourceUrl (जैसे https://192.168.31.18/thredds/dodsC/satellite/BA/ssta/5day )
जनता मेंsourceUrl ( https://oceanwatch.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day ) । इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा

लेकिन, सदस्यता प्रणाली से संबंधित सुरक्षा कारणों और कारणों के लिए, इस टैग का उपयोग नहीं करें!
इसके बजाय, हमेशा सार्वजनिक डोमेन नाम का उपयोग करते हैं<sourceUrl> टैग और उपयोग/etc/hosts tableअपने सर्वर पर एक DNS सर्वर का उपयोग किए बिना स्थानीय डोमेन नामों को IP नंबर में बदलने के लिए। आप परीक्षण कर सकते हैं कि क्या डोमेन नाम को ठीक से IP नंबर में बदल दिया गया है: पिंग कुछ डोमेन नाम
 

Englishالعربية中文(简体)हिन्दी; हिंदीاردو

  • जब कोई उपयोगकर्ता अनुरोध करता है.htmlTableसे प्रतिक्रियाERDDAP™यदि किसी स्ट्रिंग सेल में डेटा में डेटा शामिल है:image/png;base64, उसके बाद एक base64 encoded.png छवि,ERDDAP™एक आइकन प्रदर्शित करेगा (इसलिए उपयोगकर्ता छवि को देख सकता है यदि वे उस पर पड़ते हैं) और बटन पाठ या छवि को क्लिपबोर्ड पर सहेजने के लिए। इस सुविधा में जोड़ा गया थाERDDAP™v2.19 मार्को अल्बा द्वारा।

drawLandMask

  • drawLandMask डिफ़ॉल्ट सेटिंग को निर्दिष्ट करता है जो जब और कैसे लैंडमास्क को खींचा जाना चाहिएERDDAP™एक नक्शा खींचता है। इसे तीन अलग स्थानों में निर्दिष्ट किया जा सकता हैdatasets.xml (न्यूनतम से उच्चतम प्राथमिकता तक सूचीबद्ध) :

    1. अगरdrawLandMaskभीतर निर्दिष्ट है<erddapDatasets (किसी विशिष्ट डेटासेट से जुड़ा नहीं है) तब यह डिफ़ॉल्ट मान को निर्दिष्ट करता हैdrawLandMaskसभी डेटासेट में सभी चर के लिए। उदाहरण के लिए,
        <drawLandMask>under</drawLandMask>  

इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAPपढ़नाdatasets.xml। यदि यह टैग मौजूद नहीं है, तो अंतर्निहित डिफ़ॉल्ट मान नीचे है।   2. अगरdrawLandMaskकिसी दिए गए डेटासेट की वैश्विक विशेषता के रूप में निर्दिष्ट किया गया है, फिर यह डिफ़ॉल्ट मान को निर्दिष्ट करता हैdrawLandMaskउस डेटासेट में सभी चरों के लिए, किसी भी कम प्राथमिकता सेटिंग को ओवरराइड करना। उदाहरण के लिए,

    <att name="drawLandMask">under</att>  

इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™उस डेटासेट को पुनः लोड करता है।   3. अगरdrawLandMaskकिसी दिए गए डेटासेट में एक चर की विशेषता के रूप में निर्दिष्ट किया गया है, फिर यह डिफ़ॉल्ट मान को निर्दिष्ट करता हैdrawLandMaskउस डेटासेट में उस चर के लिए, किसी भी कम प्राथमिकता सेटिंग को ओवरराइड करना। उदाहरण के लिए,

    <att name="drawLandMask">under</att>  

इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™उस डेटासेट को पुनः लोड करता है।

एक उपयोगकर्ता डिफ़ॉल्ट ओवरराइड कर सकता है (जहां भी यह निर्दिष्ट है) डेटासेट के मेक ए ग्राफ वेब पेज पर ड्रॉपडाउन सूची से "ड्रॉ लैंड मास्क" के लिए एक मूल्य का चयन करके, या सहित &.land= मूल्य URL में जो एक मानचित्र का अनुरोध करता हैERDDAP।

सभी स्थितियों में, विशेषता के लिए 4 संभावित मान हैं:

  • इससे पहले कि यह मानचित्र पर डेटा खींचता है, "under" लैंडमास्क खींचता है। ग्रिड डेटासेट के लिए, जमीन एक स्थिर हल्के भूरे रंग के रूप में दिखाई देती है। सारणीबद्ध डेटासेट के लिए, "under" भूमि और महासागरों पर स्थलाकृति डेटा दिखाता है।
  • "over" ग्रिड डेटासेट के लिए, "ओवर" मानचित्रों पर डेटा आकर्षित करने के बाद लैंडमास्क को आकर्षित करता है ताकि यह जमीन पर किसी भी डेटा को मास्क कर सके। सारणीबद्ध डेटासेट के लिए, "ओवर" समुद्र के स्नानागार को दर्शाता है और एक स्थिर प्रकाश धूसर जहां भूमि है, दोनों डेटा के तहत खींचा गया है।
  • "outline" सिर्फ भू-मास्क, राजनीतिक सीमाओं, झीलों और नदियों की रूपरेखा तैयार करता है।
  • "बंद" कुछ नहीं खींचता है।

<EmailDiagnosticsToErdData>

  • [ ** <EmailDiagnosticsToErdData ** ] (#emaildiagnosticstoerddata) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xml। टैग का मान सही हो सकता है (डिफ़ॉल्ट) या झूठा। यदि सच हो,ERDDAP™क्रिस को स्टैक ट्रेस ईमेल करेंगे। जॉन नोआ में। सरकारी (The number of theERDDAP™विकास दल) । यह सुरक्षित और सुरक्षित होना चाहिए क्योंकि कोई गोपनीय जानकारी नहीं (उदाहरण के लिए, अनुरोधUrl) ईमेल में शामिल है। यह किसी भी अस्पष्ट, पूरी तरह से अप्रत्याशित बग है कि NullPointerException के लिए नेतृत्व करने के लिए संभव बनाना चाहिए। अन्यथा, उपयोगकर्ता अपवाद देखता है, लेकिनERDDAP™विकास दल नहीं करता (इसलिए हम नहीं जानते कि वहाँ एक समस्या है जिसे तय करने की आवश्यकता है) ।  

<graphbackgroundColor>

  • [ ** <ग्राफ़ बैकग्राउंड कलर> ** ] (#graphbackgroundcolor) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlग्राफ़ पर डिफ़ॉल्ट पृष्ठभूमि रंग निर्दिष्ट करने के लिए। यह लगभग सभी ग्राफों को प्रभावित करता है। कुछ स्थितियों में प्रभावित नहीं होते हैं। रंग 0xAARRGGBB, जहां AA, RR, GG, और BB क्रमशः अस्पष्टता, लाल, हरे और नीले घटकों के रूप में निर्दिष्ट है। "0x" मामला संवेदनशील है, लेकिन हेक्साडेसिमल अंक संवेदनशील नहीं हैं। उदाहरण के लिए, एक पूरी तरह से अपारदर्शी (एफएफ) red=22, green=88, blue=ee के साथ हरे-नीले रंग 0xff2288ee होगा। अपारदर्शी सफेद 0xffffff है। डिफ़ॉल्ट opaque प्रकाश नीला है (0xffccff) , जिसमें सफेद से अलग होने का लाभ होता है, जो कई पैलेटों में एक महत्वपूर्ण रंग है जो डेटा आकर्षित करने के लिए उपयोग किया जाता है। उदाहरण के लिए,
    <graphBackgroundColor>0xffffffff</graphBackgroundColor>  

इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा

<IPAddressMaxRequest>

  • [ ** <IpAddressMaxRequests> ** ] (#ipaddressmaxrequest) शायद ही कभी इस्तेमाल किया वैकल्पिक टैग है (पहली बारERDDAP™v2.12.) भीतर<erddapDatasets टैग मेंdatasets.xmlयह एक प्रणाली का हिस्सा है जो अत्यधिक आक्रामक वैध उपयोगकर्ताओं और दुर्भावनापूर्ण उपयोगकर्ताओं की क्षमता को सीमित करने के लिए एक साथ अनुरोधों की एक बड़ी संख्या बनाने के लिए है जो अन्य उपयोगकर्ताओं के लिए सिस्टम प्रदर्शन को कम करेगा। IpAddress MaxRequests एक साथ अनुरोधों की अधिकतम संख्या निर्दिष्ट करता है जो किसी विशिष्ट आईपी पते से स्वीकार किए जाएंगे। अतिरिक्त अनुरोधों को HTTP 429 त्रुटि प्राप्त होगी: बहुत सारे अनुरोध। erddap/download/और erddap/images/ में छोटी, स्थिर फाइलें इस गिनती से मुक्त नहीं हैं। डिफ़ॉल्ट है 15. अधिकतम अनुमति 1000 है, जो पागल उच्च है - यह मत करो!ERDDAP™6 से कम संख्या को स्वीकार नहीं किया क्योंकि कई वैध उपयोगकर्ता (वेब ब्राउज़रWMSग्राहक) एक समय में 6 अनुरोध करने के लिए। The The most of theERDDAP™डेली रिपोर्ट और प्रत्येक मेजर डेटासेट रीलोड के साथ log.txt फ़ाइल को लिखने वाली समान जानकारी, अब "Requester's IP address" शीर्षक के तहत इन IP पते के अनुरोधों का एक लंबा हिस्सा होगा। (बहुत सारे अनुरोध) "। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा

"Major LoadDatasets Time Series" स्थिति का अनुभाग.html में एक "tooMany" कॉलम शामिल है जो अनुरोधों की संख्या को सूचीबद्ध करता है जो उपयोगकर्ता की ipAddressMaxRequests सेटिंग से अधिक है और इस प्रकार "Too Many request" त्रुटि देखी गई है। इससे आपको आसानी से देखने की अनुमति मिलती है जब आप अत्यधिक आक्रामक वैध उपयोगकर्ताओं और दुर्भावनापूर्ण उपयोगकर्ताओं को सक्रिय कर सकते हैं। (वैकल्पिक) log.txt फ़ाइल को देखें और यह तय करें कि क्या आप उन उपयोगकर्ताओं को ब्लैकलिस्ट करना चाहते हैं।

यह एक उच्च संख्या के लिए निर्धारित करने के साथ विशेष रूप से गलत नहीं है। यह तुम्हारे ऊपर है। लेकिन ऐसा करने से लोगों को सिस्टम स्थापित करने की अनुमति मिलती है जो परियोजनाओं पर काम करने के लिए बड़ी संख्या में धागे का उपयोग करते हैं और फिर उन्हें कोई प्रतिक्रिया नहीं मिलती है कि वे क्या कर रहे हैं उन्हें कोई लाभ नहीं मिल रहा है।

<IPAddressMaxRequestActive>

  • [ ** <IpAddressMaxRequestActive> ** ] (#ipaddressmaxrequestactive) शायद ही कभी इस्तेमाल किया वैकल्पिक टैग है (पहली बारERDDAP™v2.12.) भीतर<erddapDatasets टैग मेंdatasets.xmlयह एक प्रणाली का हिस्सा है जो अत्यधिक आक्रामक वैध उपयोगकर्ताओं और दुर्भावनापूर्ण उपयोगकर्ताओं की क्षमता को सीमित करने के लिए एक साथ अनुरोधों की एक बड़ी संख्या बनाने के लिए है जो अन्य उपयोगकर्ताओं के लिए सिस्टम प्रदर्शन को कम करेगा। IPAddressMaxRequestsActive एक साथ अनुरोधों की अधिकतम संख्या को निर्दिष्ट करता है जिसे सक्रिय रूप से किसी विशिष्ट IP पते से संसाधित किया जाएगा। अतिरिक्त अनुरोध एक कतार में बैठ जाएगा जब तक कि पिछले अनुरोधों को संसाधित नहीं किया गया है। erddap/download/और erddap/images/ में छोटी, स्थिर फाइलें इस गिनती और संबंधित थ्रॉटलिंग से मुक्त हैं। डिफ़ॉल्ट है 2. अधिकतम अनुमति 100 है, जो पागल उच्च है - यह मत करो! आप इसे सख्त होने के लिए सेट कर सकते हैं, खासकर अगर आपके पास अत्यधिक आक्रामक या दुर्भावनापूर्ण उपयोगकर्ताओं के साथ समस्याएं हैं। उपयोगकर्ता अभी भी जल्दी से सभी डेटा वे अनुरोध करते हैं (ipAddressMaxRequests तक) लेकिन वे सिस्टम संसाधनों को हॉग करने में सक्षम नहीं होंगे। हम इसे एक बड़ी संख्या में सेट करने की सलाह नहीं देते क्योंकि यह अत्यधिक आक्रामक वैध उपयोगकर्ताओं और दुर्भावनापूर्ण उपयोगकर्ताओं को हावी करने की अनुमति देता हैERDDAPप्रसंस्करण क्षमता। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा।  

<IPAddressUnlimited>

  • [ ** <ipAddressUnlimited> ** ] (#ipaddressunlimited) शायद ही कभी इस्तेमाल किया वैकल्पिक टैग है (पहली बारERDDAP™v2.12.) भीतर<erddapDatasets टैग मेंdatasets.xmlयह एक प्रणाली का हिस्सा है जो अत्यधिक आक्रामक वैध उपयोगकर्ताओं और दुर्भावनापूर्ण उपयोगकर्ताओं की क्षमता को सीमित करने के लिए एक साथ अनुरोधों की एक बड़ी संख्या बनाने के लिए है जो अन्य उपयोगकर्ताओं के लिए सिस्टम प्रदर्शन को कम करेगा। IPAddressUnlimited आईपी पते की एक अल्पसंख्यक सूची है जिसे आप अपनी असीमित पहुंच की अनुमति देना चाहते हैं।ERDDAP। लॉग इन करें यह देखने के लिए कि कौन से प्रारूप आपका सर्वर आईपी पते के लिए उपयोग कर रहा है। कुछ सर्वरों पर, आईपी पते प्रारूप # में होंगे।# (जहां # 0 से 255 तक एक पूर्णांक है) जबकि दूसरों पर यह प्रारूप #:#:#:#:#:#:#:#:#:#:#:#:# । इस सूची में अनुरोधकर्ता या तो ipAddressMaxRequests या ipAddressMaxRequestsActive सेटिंग्स के अधीन नहीं हैं। यह एक माध्यमिक हो सकता हैERDDAP™या अपने सिस्टम में कुछ उपयोगकर्ताओं या सर्वरों के लिए।ERDDAP™हमेशा कहते हैं " (अज्ञातIPAddress) "ERDDAP™जब अनुरोधकर्ता के आईपी पते को निर्धारित नहीं किया जा सकता है, उदाहरण के लिए, उसी सर्वर पर चल रही अन्य प्रक्रियाओं के लिए। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा

यदि किसी कारण से सभी उपयोगकर्ता के अनुरोधों को त्रुटि संदेश "टाइमआउट को प्रोसेस करने के लिए आपके अन्य अनुरोधों के लिए इंतजार करना" मिलता है।

<LoadDatasetsMinutes>

  • [ ** <LoadDatasetsMinutes> ** ] (#loaddatasetsminminutes) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlन्यूनतम समय निर्दिष्ट करने के लिए (मिनट) प्रमुख भार के बीच डेटासेट (जबERDDAP™प्रसंस्करणdatasets.xmlप्रत्येक डेटासेट की जाँच करके यह देखने के लिए कि क्या इसकी आवश्यकता है उसके पुनः लोड के अनुसार पुनः लोड होना चाहिए प्रत्येकNMinutes सेटिंग, डिफ़ॉल्ट=15) । E.g.
    <loadDatasetsMinMinutes>15</loadDatasetsMinMinutes>  

यदि इस समय से लोडडेटासेट का कोई निश्चित रन कम लेता है, तो लोडर सिर्फ बार-बार फ्लैग डायरेक्टरी को देखता है और/या तब तक सोता है जब तक कि शेष समय समाप्त हो गया हो। डिफ़ॉल्ट 15 मिनट है, जो लगभग सभी के लिए ठीक होना चाहिए। इसे एक छोटी संख्या में सेट करने के लिए एकमात्र नुकसान यह है कि यह आवृत्ति को बढ़ा देगा किERDDAP™उन डेटासेटों को पुनर्स्थापित करें जिनके पास त्रुटियां हैं जो उन्हें लोड होने से रोकती हैं (उदाहरण के लिए, एक दूरस्थ सर्वर नीचे है) । यदि ऐसे बहुत सारे डेटासेट होते हैं और उन्हें बार-बार परीक्षण किया जाता है, तो डेटा स्रोत इसे कीस्टरिंग / आक्रामक व्यवहार पर विचार कर सकता है। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा। पहलेERDDAP™v2.00, यह सेटअप.xml में निर्दिष्ट किया गया था, जो अभी भी अनुमति है लेकिन हतोत्साहित है।  

<LoadDatasetsMaxMinutes>

  • [ ** <LoadDatasetMaxMinutes> ** ] (#loaddatasetsmaxminutes) एक के भीतर एक OPTIONAL टैग है<erddapDatasets टैग मेंdatasets.xmlअधिकतम समय निर्दिष्ट करने के लिए (मिनट) एक प्रमुख भार डेटासेट प्रयास को लेने की अनुमति है (भार से पहले डेटासेट थ्रेड को "स्टॉल" के रूप में माना जाता है और बाधित होता है) (डिफ़ॉल्ट=60) । E.g.
    <loadDatasetsMaxMinutes>60</loadDatasetsMaxMinutes>  

सामान्य तौर पर, यह तब तक कम से कम दो बार निर्धारित किया जाना चाहिए जब तक आपको तर्कपूर्वक लगता है कि सभी डेटासेट को फिर से लोड करना (संक्षेप में) लेना (चूंकि कंप्यूटर और नेटवर्क कभी-कभी उम्मीद से धीमी होते हैं) यह हमेशा loadDatasetsMinutes की तुलना में बहुत लंबा होना चाहिए। डिफ़ॉल्ट 60 मिनट है। कुछ लोग इसे लंबे समय तक सेट करेंगे। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा। पहलेERDDAP™v2.00, यह सेटअप.xml में निर्दिष्ट किया गया था, जो अभी भी अनुमति है लेकिन हतोत्साहित है।  

<LogLevel>

  • [ ** <लॉग इन करें ** ] (#loglevel) एक के भीतर एक OPTIONAL टैग है<erddapDatasets टैग मेंdatasets.xmlयह निर्दिष्ट करने के लिए कि कितने नैदानिक संदेश log.txt फ़ाइल में भेजे जाते हैं। इसे "गर्मी" के लिए सेट किया जा सकता है (सबसे कम संदेश) "इन्फो" (डिफ़ॉल्ट) , या "सभी" (अधिकांश संदेश) । E.g.
    <logLevel>info</logLevel>  

इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा। पहलेERDDAP™v2.00, यह सेटअप.xml में निर्दिष्ट किया गया था, जो अभी भी अनुमति है लेकिन हतोत्साहित है।  

<आंशिकRequestMaxBytes> और<आंशिकRequestMaxCells>

  • [ ** <आंशिकRequestMaxBytes> ] (#partialrequestmaxbytes-and-partialrequestmaxcells) [ <आंशिकRequestMaxCells> ** ] (#partialrequestmaxbytes-and-partialrequestmaxcells) शायद ही कभी एक के भीतर OPTIONAL टैग का उपयोग किया जाता है<erddapDatasets टैग मेंdatasets.xml। जब संभव हो (यह हमेशा संभव नहीं है) ,ERDDAP™बड़े डेटा अनुरोधों को स्मृति को संरक्षित करने के लिए टुकड़ों में तोड़ देता है।

32 बिटJavaएक सरल भावना में, एक साथ की अधिकतम संख्या बड़ा अनुरोध मोटे तौर पर उपलब्ध स्मृति का 3/4 है (-Xmx मान टॉमकैट में पारित) खंड आकार (उदाहरण के लिए, 1200 MB / 100 MB => 12 request) । अन्य चीजों को स्मृति की आवश्यकता होती है, इसलिए अनुरोधों की वास्तविक संख्या कम हो जाएगी। अभ्यास में, चंकण हमेशा संभव नहीं है। इसलिए एक विशाल या कुछ बहुत बड़े एक साथ गैर-चंकनीय अनुरोध 32 बिट पर समस्याएं पैदा कर सकता हैJava।

64 बिट के साथJava-Xmx मान बहुत बड़ा हो सकता है। इसलिए स्मृति एक बाधा होने की संभावना बहुत कम है।

आप इन टैगों को परिभाषित करके डिफ़ॉल्ट चंक आकार को ओवरराइड कर सकते हैंdatasets.xml (यहाँ से प्रदर्शित की तुलना में विभिन्न मूल्यों के साथ) : ग्रिड के लिए:<आंशिकRequestMaxBytes>100000000</partialRequestMaxBytes> तालिकाओं के लिए:<आंशिकRequestMaxCells> 1000000</partialRequestMaxCells>

आंशिकRequestMaxBytes एक आंशिक ग्रिड डेटा अनुरोध के लिए बाइट्स की पसंदीदा अधिकतम संख्या है (कुल अनुरोध का एक हिस्सा) । डिफ़ॉल्ट=100000000 (10^8) । बड़ा आकार जरूरी नहीं है (और 500 MB पर नहीं जाना क्योंकि यह THREDDS की डिफ़ॉल्ट सीमा हैDAPजवाब) । लेकिन बड़े आकार में फ़ाइलों के टन के कम उपयोग की आवश्यकता हो सकती है (सोचनाERDप्रत्येक समय के साथ उपग्रह डेटा एक अलग फ़ाइल में इंगित करता है - यह प्रत्येक आंशिक अनुरोध में प्रत्येक फ़ाइल से अधिक डेटा प्राप्त करना बेहतर है) ।

आंशिकRequestMaxCells कोशिकाओं की पसंदीदा अधिकतम संख्या है (nRows \* डेटा तालिका में nColumns) आंशिक TABLE डेटा अनुरोध के लिए (कुल अनुरोध का एक हिस्सा) । डिफ़ॉल्ट = 100000। बड़ा आकार जरूरी नहीं है। वे स्रोत से डेटा के प्रारंभिक बैच के लिए लंबे समय तक इंतजार करते हैं।

इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा। पहलेERDDAP™v2.00, इन्हें सेटअप.xml में निर्दिष्ट किया गया था, जिसे अभी भी अनुमति दी गई है लेकिन हतोत्साहित किया गया है।  

<अनुरोधब्लैकलिस्ट>

  • [ ** <अनुरोधब्लैकलिस्ट> ** ] (#requestblacklist) एक वैकल्पिक टैग हैभीतर<erddapDatasets टैग मेंdatasets.xmlजिसमें न्यूमेरिक आईपी पते की एक कॉमा-सेपरेटेड सूची शामिल है जिसे ब्लैकलिस्ट किया जाएगा। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा
    • इसका उपयोग करने के लिए किया जा सकता हैसेवा हमले का डेनियलअत्यधिक zealousवेब रोबोट, या किसी अन्य प्रकार के परेशानी उपयोगकर्ता।
    • समस्याग्रस्त उपयोगकर्ता अगरERDDAP™एक क्रॉल या फ्रीज / स्टॉप को धीमा कर देता है, कारण अक्सर एक परेशानी वाला उपयोगकर्ता होता है जो एक बार में एक से अधिक स्क्रिप्ट चला रहा है और / या बड़ी संख्या में बहुत बड़ी, अत्यंत अक्षम, या अमान्य अनुरोध, या एक साथ अनुरोध करता है। देखोलॉग-इनयह देखने के लिए कि क्या यह मामला है और परेशानी उपयोगकर्ता के संख्यात्मक आईपी पते को ढूंढना है। यदि यह समस्या है तो आपको शायद उस उपयोगकर्ता को ब्लैकलिस्ट करना चाहिए।

कबERDDAP™एक ब्लैकलिस्ट आईपी पते से अनुरोध प्राप्त होता है, यह HTTP त्रुटि 403: निषिद्ध वापस आ जाएगा। पाठ त्रुटि संदेश के साथ उपयोगकर्ता को ईमेल करने के लिए प्रोत्साहित करता है, जो आपको ईमेल करने के लिए प्रोत्साहित करता है।ERDDAPव्यवस्थापक, समस्याओं को दूर करने के लिए। यदि वे त्रुटि संदेश पढ़ने का समय लेते हैं (कई स्पष्ट रूप से नहीं करते) और आपसे संपर्क करें, फिर आप उन्हें एक समय में सिर्फ एक स्क्रिप्ट चलाने के लिए उन्हें पाने के लिए उनके साथ काम कर सकते हैं, अधिक कुशल अनुरोध कर सकते हैं, अपनी स्क्रिप्ट में समस्याओं को ठीक कर सकते हैं (उदाहरण के लिए, एक दूरस्थ डेटासेट से डेटा का अनुरोध करना जो टाइमिंग आउट करने से पहले जवाब नहीं दे सकता) , या जो कुछ भी परेशानी का स्रोत था।

उपयोगकर्ता अक्सर अनजान होते हैं कि उनके अनुरोधों में परेशानी होती है। वे अक्सर बग, सकल अक्षमता, या उनकी स्क्रिप्ट के साथ अन्य समस्याओं से अनजान होते हैं। वे अक्सर सोचते हैं कि आपके कारणERDDAP™मुक्त करने के लिए डेटा प्रदान करता है, कि वे जितना चाहें उतना डेटा पूछ सकते हैं, उदाहरण के लिए, एकाधिक स्क्रिप्ट चलाकर या एकाधिक धागे का उपयोग करके।

  • आप उन्हें बता सकते हैं कि प्रत्येकERDDAP™अब यह बात है कि कितना बड़ा और शक्तिशाली है, इसमें सीमित संसाधन हैं (CPU समय, हार्ड ड्राइव I/O, नेटवर्क बैंडविड्थ, आदि।) यदि कोई उपयोगकर्ता किसी तरह से डेटा का अनुरोध करता है तो यह उचित नहीं है कि अन्य उपयोगकर्ताओं को भीड़ या ओवरबर्डेंस से बाहर निकलने वाले तरीके से डेटा का अनुरोध करता है।ERDDAP।
  • एक बार जब एक उपयोगकर्ता जानता है कि कैसे 2 एक साथ अनुरोध करने के लिए, वे अक्सर 5, 10 या 20 एक साथ अनुरोध करने का कोई कारण नहीं देखते हैं, क्योंकि अतिरिक्त अनुरोध उन्हें कुछ भी नहीं खर्च करते हैं। यह असममित युद्ध की तरह है: यहां, आक्रामक हथियारों का जबरदस्त फायदा होता है (शून्य लागत) रक्षात्मक हथियारों पर (वास्तविक लागत के साथ एक परिमित स्थापना) ।
  • उन्हें इंगित करें कि अधिक से अधिक एक साथ अनुरोध करने के लिए रिटर्न को कम करना है; अतिरिक्त अनुरोध सिर्फ अन्य उपयोगकर्ता के अनुरोधों को अवरुद्ध करते हैं; वे उनके लिए भारी सुधार नहीं करते हैं।
  • उन्हें याद रखें कि अन्य उपयोगकर्ता हैं (दोनों आकस्मिक उपयोगकर्ताओं और अन्य उपयोगकर्ताओं को चलाने स्क्रिप्ट) इसलिए यह उनमें से किसी के लिए निष्पक्ष नहीं हैERDDAPसंसाधन
  • इंगित करें कि तकनीकी दिग्गजों ने उपयोगकर्ताओं को वेब सेवाओं से अनंत संसाधनों की उम्मीद करने के लिए प्रेरित किया है। जबकि स्थापित करने के तरीके हैंग्रिड/क्लस्टर/फेडरेशन ऑफERDDAPsबनानाERDDAP™अधिक संसाधनों के साथ प्रणाली, अधिकांशERDDAP™प्रशासकों के पास ऐसी प्रणालियों को स्थापित करने के लिए धन या श्रमशक्ति नहीं है, और ऐसी प्रणाली अभी भी परिमित होगी। परERDउदाहरण के लिए, एक व्यक्ति है (मुझे) लेखनERDDAP™, दो प्रशासनERDDAPs (मेरी मदद से बॉस) कई डेटा स्रोतों को प्रबंधित करना और प्रबंधित करना (हम हार्डवेयर के लिए भुगतान करने के लिए कभी-कभी अनुदान पर भरोसा करते हैं) । यह गूगल, फेसबुक, अमेज़न आदि 100 के इंजीनियरों के साथ नहीं है, और लाखों डॉलर राजस्व कभी बड़े सिस्टम में रीसायकल करने के लिए है। हम अभी नहीं चल सकतेERDDAP™उदाहरण के लिए, अमेज़ॅन एडब्ल्यूएस, क्योंकि डेटा भंडारण लागत बड़ी है और डेटा प्रवेश शुल्क बड़े और परिवर्तनीय हैं, जबकि बाहरी सेवाओं के लिए हमारा बजट एक निश्चित $ 0 है।
  • उपयोगकर्ताओं के लिए मेरा अनुरोध है: गैर-समय-संवेदनशील अनुरोधों के लिए (जो अब तक सबसे आम मामला है) उनकी प्रणाली केवल एक समय में एक अनुरोध करना चाहिए। यदि अनुरोध समय संवेदनशील है (उदाहरण के लिए, एक वेब पेज पर एकाधिक .png, एक के लिए कई टाइलेंWMSग्राहक, आदि) , तो शायद 4 एक साथ अनुरोध अधिकतम होना चाहिए (केवल थोड़े समय के लिए) ।
  • यदि आप उपयोगकर्ता को स्थिति की व्याख्या करते हैं, तो अधिकांश उपयोगकर्ता आवश्यक परिवर्तन करने के लिए समझेंगे और तैयार होंगे ताकि आप ब्लैकलिस्ट से अपने आईपी पते को हटा सकें।  
  • एक उपयोगकर्ता को ब्लैकलिस्ट करने के लिए, आईपी पते की अल्पसंख्यक सूची में अपना संख्यात्मक आईपी पता जोड़ें<अपने अनुरोध में ब्लैकलिस्ट>datasets.xmlफ़ाइल परेशानी उपयोगकर्ता के आईपी पते को खोजने के लिए, में देखेंERDDAP™ बड़ाParentDirectory /logs/log.txt फ़ाइल ( बड़ाParentDirectory में निर्दिष्ट हैसाइटमैप) यह देखने के लिए कि क्या यह मामला है और उस उपयोगकर्ता के आईपी पते को ढूंढना है। प्रत्येक अनुरोध के लिए आईपी पते को "{{{{{#" के साथ शुरू होने वाली रेखाओं पर सूचीबद्ध किया गया है और उदाहरण के लिए, 4 संख्याओं को अवधियों से अलग किया गया है। "ERROR" के लिए खोज करने से आपको अमान्य अनुरोध जैसे समस्याओं को खोजने में मदद मिलेगी।
  • आप आईपी पते में अंतिम संख्या को भी बदल सकते हैं\(उदाहरण के लिए, 202.109.200)।\) आईपी पते, 0-255 की एक श्रृंखला को अवरुद्ध करने के लिए।
  • आप आईपी पते में अंतिम 2 संख्याओं को भी बदल सकते हैं\।\ (उदाहरण के लिए, 121.204।\।\) आईपी पते की एक विस्तृत श्रृंखला को अवरुद्ध करने के लिए, 0-255.0-255।
  • उदाहरण के लिए,
    <requestBlacklist>98.76.54.321, 202.109.200.\\*, 121.204.\\*.\\*</requestBlacklist>
  • आपको पुनरारंभ करने की आवश्यकता नहीं हैERDDAP™परिवर्तन के लिए<ब्लैकलिस्ट> का अनुरोध करने के लिए। परिवर्तन अगली बार पता लगाया जाएगाERDDAP™अगर किसी डेटासेट को फिर से लोड करने की आवश्यकता है, तो चेक करें। या, आप प्रक्रिया को गति दे सकते हैंसेट ध्वज यूआरएलकिसी भी डेटासेट के लिए।
  • आपकाERDDAP™दैनिक रिपोर्ट में सबसे सक्रिय अनुमति और अवरुद्ध अनुरोधकर्ता की सूची/tally शामिल है।
  • यदि आप यह जानना चाहते हैं कि डोमेन / संस्था एक संख्यात्मक आईपी पते से संबंधित है, तो आप एक मुफ्त, रिवर्स DNS वेब सेवा जैसे कि उपयोग कर सकते हैं। https://network-tools.com/
  • जब कुछ उपयोगकर्ताओं को उच्च स्तर पर ब्लॉक करना पड़ता है, उदाहरण के लिए, दुर्भावनापूर्ण उपयोगकर्ता। उदाहरण के लिए, आप अपने सर्वर पर सब कुछ करने के लिए अपनी पहुँच को अवरुद्ध कर सकते हैं, न केवलERDDAP। लिनक्स पर, एक ऐसी विधि का उपयोग करना हैआईपीटेबल। उदाहरण के लिए, आप एक नियम जोड़ सकते हैं जो आदेश के साथ 198.51.100.0 से आने वाली सभी चीजों को अवरुद्ध करेगा iptables -I INPUT -s 198.51.100.0 -j DROP

<धीमेडाउनट्रबलमिली एंड जीटी;

  • [ ** <धीमाडाउनट्रबलमिली> ** ] (#slowdowntroublemillis) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlजिसमें एक पूर्णांक शामिल है जो मिलीसेकेंड की संख्या निर्दिष्ट करता है (डिफ़ॉल्ट=1000) सभी असफल अनुरोधों का जवाब देते समय रोकें, उदाहरण के लिए, अज्ञात डेटासेट, ब्लैकलिस्ट पर बहुत बड़े, उपयोगकर्ता का अनुरोध करें। E.g.
    <slowDownTroubleMillis>2000</slowDownTroubleMillis>

यदि एक स्क्रिप्ट तुरंत दूसरे के बाद एक अनुरोध कर रही है, तो यह तेजी से दूसरे के बाद एक बुरा अनुरोध कर सकता है। इस सेटिंग के साथ, आप एक असफल स्क्रिप्ट को धीमा कर सकते हैं ताकिERDDAP™बुरा अनुरोध के साथ बाढ़ नहीं है। यदि कोई व्यक्ति बुरा अनुरोध करता है, तो वे इस देरी को भी नोटिस नहीं करेंगे। सिफारिश:

  • यदि परेशानी सेवा का एक वितरित डेनियल है (डीडीओएस) 100+ हमलावरों से हमला, इसे एक छोटी संख्या में सेट करें (100?) । उन्हें बहुत लंबे समय तक चलने के लिए बहुत सारे सक्रिय धागे की ओर जाता है।
  • यदि समस्या 1-10 स्रोतों से है, तो इसे 1000 ms तक सेट करें। (डिफ़ॉल्ट) लेकिन एक बड़ी संख्या (10000) भी उचित है। यह उन्हें धीमा कर देता है ताकि वे कम नेटवर्क संसाधनों को बर्बाद कर सकें। इसके अलावा, 1000 एमएस या तो मानव उपयोगकर्ताओं को परेशान नहीं करेगा जो खराब अनुरोध करते हैं।

इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा।  

<सदस्यताईमेलब्लैकलिस्ट>

  • [ ** <सदस्यता ईमेल ** ] (#subscriptionemailblacklist) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlजिसमें ईमेल पते की अल्पसंख्यक सूची होती है जो तुरंत ब्लैकलिस्ट होती हैसदस्यता प्रणालीउदाहरण के लिए
    <subscriptionEmailBlacklist>bob@badguy.com, john@badguy.com</subscriptionEmailBlacklist>  

यह एक असंवेदनशील प्रणाली है। यदि इस सूची में एक ईमेल पता जोड़ा जाता है, तो यदि उस ईमेल पते की सदस्यता है, तो सदस्यता रद्द कर दी जाएगी। यदि सूची में एक ईमेल पता सदस्यता लेने की कोशिश करता है, तो अनुरोध को मना कर दिया जाएगा। इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा।  

मानक पाठ

  • मानक पाठ -- कई वैकल्पिक टैग हैं (शायद ही कभी इस्तेमाल किया जाता है) भीतर<erddapDatasets टैग मेंdatasets.xmlपाठ निर्दिष्ट करने के लिए जो विभिन्न स्थानों में दिखाई देता हैERDDAP। यदि आप डिफ़ॉल्ट टेक्स्ट को बदलना चाहते हैं, तो उसी नाम के टैग से मौजूदा मान को कॉपी करें। tomcat Webapps/erddap/WEB-INF/classs/gov/noaa/pfel/erddap/util.mesage.xml मेंdatasets.xmlफिर सामग्री को संशोधित करें। इनका लाभdatasets.xmlयह है कि आप किसी भी समय नए मूल्यों को निर्दिष्ट कर सकते हैं, यहां तक कि जब भीERDDAP™चल रहा है। इन टैगों के मूल्यों में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा। टैग नाम उनके उद्देश्य का वर्णन करते हैं, लेकिन संदेशों में डिफ़ॉल्ट सामग्री देखते हैं।

    • <मानक लाइसेंस>

    • <मानकसंपर्क>

    • <StandardDataLicenses

    • <मानक अस्वीकरण

    • <StandardDisclaimerOfExternalLinks>

    • <Standard GeneralDisclaimer

    • <मानक गोपनीयता नीति>

    • <startHeadHtml5>

    • <startBodyHtml5> अपने वेब पेज में हर वेब पेज के शीर्ष की उपस्थिति को अनुकूलित करने के लिए बदलने के लिए एक अच्छा टैग है।ERDDAP। विशेष रूप से, आप इसका उपयोग आसानी से अस्थायी संदेश जोड़ने के लिए कर सकते हैंERDDAP™होम पेज (उदाहरण के लिए, "नए JPL MUR SST v4.1 डेटासेट की जाँच करें ..." या "इस"ERDDAP™रखरखाव 2019-05-08T17:00:00 PDT के माध्यम से 2019-05-08T20:00:00 PDT के लिए ऑफ़लाइन होगा।) । इस टैग को डालने का एक quirkdatasets.xmlजब आप पुनरारंभ करते हैंERDDAPसबसे पहले अनुरोधERDDAP™डिफ़ॉल्ट प्रारंभ वापस आ जाएगा BodyHtml5 HTML, लेकिन बाद में प्रत्येक अनुरोध में निर्दिष्ट startBodyHtml5 HTML का उपयोग करेगा।datasets.xml।

    • <दशमलव Html> आपके विवरण को अनुकूलित करने के लिए बदलने के लिए एक अच्छा टैग हैERDDAP। ध्यान दें कि आप आसानी से इसे घर पृष्ठ पर अस्थायी संदेश जोड़ने के लिए बदल सकते हैं (उदाहरण के लिए, "यहERDDAP™रखरखाव 2019-05-08T17:00:00 PDT के माध्यम से 2019-05-08T20:00:00 PDT के लिए ऑफ़लाइन होगा।) ।

    • <endBodyHtml5>

पहलेERDDAP™v2.00, इन्हें सेटअप.xml में निर्दिष्ट किया गया था, जिसे अभी भी अनुमति दी गई है लेकिन हतोत्साहित किया गया है।  

<असामान्य गतिविधि>

  • [ ** <असामान्यसक्रियता> ** ] (#unusualactive) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlलोडडाटासेट के दो रनों के बीच अधिकतम अनुरोधों को निर्दिष्ट करने के लिए जिसे सामान्य माना जाता है (डिफ़ॉल्ट=10000) । यदि उस संख्या से अधिक है, तो ईमेल को ईमेल करने के लिए भेजा जाता है (सेटअप.xml में निर्दिष्ट के रूप में) । E.g.
    <unusualActivity>10000</unusualActivity>  

इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा। पहलेERDDAP™v2.00, यह सेटअप.xml में निर्दिष्ट किया गया था, जो अभी भी अनुमति है लेकिन हतोत्साहित है।  

<अद्यतनMaxEvents>

  • [ ** <अद्यतनMaxEvents> ** ] (#updatemaxevents) शायद ही कभी एक के भीतर OPTIONAL टैग का इस्तेमाल किया जाता है<erddapDatasets टैग मेंdatasets.xmlफ़ाइल परिवर्तन घटनाओं की अधिकतम संख्या निर्दिष्ट करने के लिए (डिफ़ॉल्ट=10) that will be handled by the [[]<EveryNMillis (#updateeverynmillis) इसके बजाय डेटासेट को पुनः लोड करने के लिए स्विच करने से पहले सिस्टम। उदाहरण के लिए,
    <updateMaxEvents>10</updateMaxEvents>  

अद्यतनEveryNMillis प्रणाली उपयोगकर्ता के अनुरोध को संसाधित करने से पहले बहुत जल्दी चलाने का इरादा है। यदि फ़ाइल परिवर्तन की कई घटनाएं हैं, तो संभवतः यह जल्दी से नहीं चल सकता है, इसलिए इसके बजाय डेटासेट को पुनः लोड करने के लिए कॉल करता है। अगर आपकाERDDAP™जब बड़ी संख्या में डेटा फ़ाइलों में परिवर्तन होता है, तब भी डेटासेट के साथ सौदों को रखा जाना चाहिए। (100?) ।

<उपयोगकर्ता>

  • [ ** <उपयोगकर्ता ** ] (#user) एक के भीतर एक OPTIONAL टैग है<erddapDatasets टैग मेंdatasets.xmlजो उपयोगकर्ता के उपयोगकर्ता नाम, पासवर्ड की पहचान करता है (यदि प्रमाणीकरण = कस्टम) , और भूमिकाएं (अल्पसंख्यक सूची) । उपयोगकर्ता नाम और पासवर्ड के उपयोग के मूल्य के आधार पर थोड़ा भिन्न होता है [<प्रमाणीकरण> (/docs/server-admin/additional-information#authentication) अपनेERDDAP's सेटअप.xml फ़ाइल.
    • यह हिस्सा हैERDDAP'सुरक्षा प्रणालीकुछ उपयोगकर्ताओं को कुछ डेटासेट तक पहुंच को प्रतिबंधित करने के लिए।
    • एक अलग बनाएं<प्रत्येक उपयोगकर्ता के लिए उपयोगकर्ता> टैग। वैकल्पिक रूप से, यदि प्रमाणीकरण = oauth2, तो आप दो सेट अप कर सकते हैं<उपयोगकर्ता प्रत्येक उपयोगकर्ता के लिए टैग: एक के लिए जब उपयोगकर्ता लॉग इन करता है गूगल, एक के लिए जब उपयोगकर्ता Orcid के माध्यम से प्रवेश करता है, संभवतः उसी भूमिकाओं के साथ।
    • यदि नहीं है<एक ग्राहक के लिए उपयोगकर्ता> टैग, s / वह केवल सार्वजनिक डेटासेट तक पहुंचने में सक्षम होगा, अर्थात, डेटासेट जिसमें कोई नहीं है [<सुलभ (#accessibleto) टैग
    • उपयोगकर्ता नाम प्रमाणीकरण = कस्टम के लिए, उपयोगकर्ता नाम आमतौर पर अक्षर, अंक, अंडरस्कोर और अवधि का संयोजन होता है। प्रमाणीकरण के लिए = Email, उपयोगकर्ता नाम उपयोगकर्ता का ईमेल पता है। यह कोई ईमेल पता हो सकता है। प्रमाणीकरण = Google के लिए, उपयोगकर्ता नाम उपयोगकर्ता का पूरा Google ईमेल पता है। इसमें Google प्रबंधित खाते जैसे शामिल हैं@noaa.govखाता प्रमाणीकरण = Orcid के लिए, उपयोगकर्ता नाम उपयोगकर्ता का Orcid खाता संख्या है (डैश के साथ) । प्रमाणीकरण = oauth2 के लिए, उपयोगकर्ता का नाम उपयोगकर्ता का पूरा Google ईमेल पता या उपयोगकर्ता का Orcid खाता संख्या है। (डैश के साथ) ।
    • पासवर्ड प्रमाणीकरण के लिए = Email, Google, orcid, या oauth2, एक पासवर्ड विशेषता निर्दिष्ट नहीं है। प्रमाणीकरण = कस्टम के लिए, आपको प्रत्येक उपयोगकर्ता के लिए एक पासवर्ड विशेषता निर्दिष्ट करनी होगी।
      • उपयोगकर्ता प्रवेश करने वाले पासवर्ड केस संवेदनशील होते हैं और उनके पास 8 या अधिक अक्षर होते हैं ताकि वे क्रैक करना कठिन हो। आजकल, यहां तक कि 8 अक्षरों को एडब्ल्यूएस पर कंप्यूटर के क्लस्टर का उपयोग करके ब्रूट फोर्स द्वारा जल्दी और सस्ते में क्रैक किया जा सकता है।ERDDAP™जब उपयोगकर्ता लॉग इन करने की कोशिश करता है तो केवल 8-character को न्यूनतम रूप से लागू करता है (नहीं जब उपयोगकर्ता लॉग इन करने की कोशिश करता है)<उपयोगकर्ता> टैग संसाधित किया जा रहा है, क्योंकि यह कोड केवल पासवर्ड के हैश पाचन को देखता है, न कि सादे पाठ पासवर्ड।
      • सेटअप.xml<पासवर्ड एन्कोडिंग> यह निर्धारित करता है कि पासवर्ड कैसे संग्रहीत किए जाते हैं<उपयोगकर्ता टैग मेंdatasets.xml। बढ़ती सुरक्षा के लिए विकल्प हैं:
        • MD5 (इसका उपयोग न करें!) - पासवर्ड विशेषता के लिए, उपयोगकर्ता के पासवर्ड के MD5 हैश को निर्दिष्ट करें।
        • UEPMD5 (इसका उपयोग न करें!) - पासवर्ड विशेषता के लिए, MD5 हैश पाचन निर्दिष्ट करें उपयोगकर्ता नाम :ERDDAP: पासवर्ड । उपयोगकर्ता नाम और "ERDDAP"नमक हैश वैल्यू, इसे डीकोड करने के लिए और अधिक कठिन बनाती है।
        • SHA256 (अनुशंसित नहीं) - पासवर्ड विशेषता के लिए, उपयोगकर्ता के पासवर्ड के SHA-256 हैश पाचन निर्दिष्ट करें।
        • UEPSHA256 (डिफ़ॉल्ट, अनुशंसित पासवर्ड एन्कोडिंग। लेकिन बेहतर: गूगल, ऑर्किड या oauth2 प्रमाणीकरण विकल्पों का उपयोग करें।) - पासवर्ड विशेषता के लिए, SHA-256 हैश पाचन निर्दिष्ट करें उपयोगकर्ता नाम :ERDDAP: पासवर्ड । उपयोगकर्ता नाम और "ERDDAP" हैश मान को नमक देने के लिए उपयोग किया जाता है, जिससे इसे डीकोड करना मुश्किल हो जाता है।
      • विंडोज पर, आप MD5 प्रोग्राम को डाउनलोड करके MD5 पासवर्ड पाचन मान उत्पन्न कर सकते हैं (जैसेMD5) उपयोग (उदाहरण के लिए) : md5 -djsmith:ERDDAP: वास्तविक पासवर्ड
      • लिनक्स/यूनिक्स पर, आप अंतर्निहित md5sum प्रोग्राम का उपयोग करके MD5 पाचन मान उत्पन्न कर सकते हैं (उदाहरण के लिए) : Echo -n "jsmith:ERDDAP: वास्तविक पासवर्ड "|md5sum
      • संग्रहीत सादे पाठ पासवर्ड मामले संवेदनशील हैं। MD5 और UEPMD5 पासवर्ड के संग्रहीत रूप संवेदनशील नहीं हैं।
      • उदाहरण के लिए (UEPMD5) , अगर उपयोगकर्ता का नाम = "jsmith" और पासवर्ड = "mypassword", तो पासवर्ड<उपयोगकर्ता> टैग है:
            <user username="jsmith"  
password="57AB7ACCEB545E0BEB46C4C75CEC3C30"
roles="JASmith, JASmithGroup" />

जहां संग्रहीत पासवर्ड के साथ उत्पन्न किया गया था md5 -djsmith:ERDDAP:mypassword

  • भूमिकाओं की एक तुलनात्मक सूची है जिसके लिए उपयोगकर्ता अधिकृत है। कोई<Dataset> एक हो सकता है [<सुलभ (#accessibleto) टैग जो भूमिकाओं को सूचीबद्ध करता है जिन्हें उस डेटासेट तक पहुंचने की अनुमति है। किसी दिए गए उपयोगकर्ता और दिए गए डेटासेट के लिए, यदि उपयोगकर्ता की भूमिकाओं की सूची में भूमिकाओं में से एक डेटासेट की सूची में भूमिकाओं में से एक से मेल खाता है।<सुलभ To> भूमिकाओं, फिर उपयोगकर्ता उस डेटासेट तक पहुंचने के लिए अधिकृत है।

प्रत्येक उपयोगकर्ता जो लॉग इन करता है उसे स्वचालित रूप से भूमिका दी जाती है\[लॉग इन में\]क्या है?<उपयोगकर्ता> उनके लिए टैगdatasets.xmlनहीं तो अगर कोई डेटासेट दिया गया है

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

तब कोई भी उपयोगकर्ता जो लॉग इन होता है उसे उस डेटासेट तक पहुंचने के लिए अधिकृत किया जाएगा, भले ही कोई डेटासेट न हो<उपयोगकर्ता> उनके लिए टैगdatasets.xml।

  • इस टैग के मूल्य में कोई बदलाव अगली बार प्रभावी होगाERDDAP™पढ़नाdatasets.xmlडेटासेट के जवाब में,झंडा।  

<पथRegex>

  • [ ** <पथRegex> ** ] (#pathregex) आपको एक नियमित अभिव्यक्ति निर्दिष्ट करने देता है जो पथ को सीमित करता है (जो उपनिर्देशिका) डेटासेट में शामिल किया जाएगा। डिफ़ॉल्ट है। यह शायद ही कभी इस्तेमाल किया जाता है, शायद ही कभी जरूरत है, OPTIONAL टैग के लिएEDDGridfromFiles datasets, EDDTableFromFiles datasets, और कुछ अन्य डेटासेट प्रकार। हालांकि, जब आपको इसकी आवश्यकता है, तो आपको वास्तव में इसकी आवश्यकता है।

इस काम को बनाने के लिए, आपको नियमित अभिव्यक्तियों के साथ वास्तव में अच्छा होना चाहिए। इसे देखेंरेगेक्स प्रलेखनऔरRegex ट्यूटोरियल। विशेष रूप से, आपको कैप्चर समूह के बारे में जानने की आवश्यकता है (Parentheses) , और "or" प्रतीक "|"। साथ में, ये आपको कई विकल्प निर्दिष्ट करते हैं, उदाहरण के लिए, (विकल्प1|विकल्प2|विकल्प3) । इसके अलावा, कोई भी विकल्प कुछ भी नहीं हो सकता है, उदाहरण के लिए, (|विकल्प2|विकल्प3) । इसके अलावा, आपको यह जानने की आवश्यकता है कि समूह को घोंसला किया जा सकता है, अर्थात्, किसी कैप्चर समूह में कोई विकल्प किसी अन्य कैप्चर समूह को शामिल कर सकता है, उदाहरण के लिए, (|विकल्प2 (|विकल्प2 b|विकल्प2c) |विकल्प3) जो कहता है कि Option2 को कुछ भी नहीं, या Option2b, या Option2c द्वारा पालन किया जा सकता है। PathRegexes के लिए, प्रत्येक विकल्प एक फ़ोल्डर नाम होगा जिसके बाद एक /, उदाहरण के लिए, बार / होगा।

पथ का मुश्किल हिस्सा है: जबERDDAP™Recursively निर्देशिका के पेड़ में उतरता है, पथRegex को डेटा के साथ निर्देशिकाओं के रास्ते में आने वाले सभी मार्गों को स्वीकार करना होगा। Regex के साथ घोंसले पर कब्जा समूह इस से निपटने का एक अच्छा तरीका है।

उदाहरण: मान लीजिए कि हमारे पास निम्नलिखित निर्देशिका संरचना है:

/foo/bar/D0001/a/\\*.nc  
/foo/bar/D0001/b/\\*.nc
/foo/bar/D0002/a/\\*.nc
/foo/bar/D0002/b/\\*.nc
...
/foo/bar/E0001/a/\\*.nc
...

और निर्दिष्ट फ़ाइलDirectory /foo/bar/ है, और हम सिर्फ चाहते हैं.ncD में फ़ाइलें\[0-9\]{4}/a/ subdirectories. समाधान करने के लिए /foo/bar/ (|D\[0-9\]{4}/ (|A) )
कहते हैं: पथ / foo/bar/ के साथ शुरू होना चाहिए इसके बाद कुछ भी नहीं हो सकता\[0-9\]{4}/ इसके बाद कुछ भी नहीं हो सकता

हाँ, PathRegex का निर्माण करने के लिए अविश्वसनीय रूप से मुश्किल हो सकता है। यदि आप अटक जाते हैं, तो कंप्यूटर प्रोग्रामर से पूछें (वास्तविक दुनिया में सबसे करीबी चीज एक विज़ार्ड स्पॉटिंग incantations के लिए?) या क्रिस को एक ईमेल भेजें। जॉन at noaa.gov.

<Dataset>

  • [ ** <डेटासेट> ** ] (#dataset) एक वैकल्पिक है (लेकिन हमेशा इस्तेमाल किया) एक के भीतर टैग<erddapDatasets टैग मेंdatasets.xml(यदि आप सभी जानकारी को शामिल करते हैं)<डेटासेट> और</dataset>) पूरी तरह से एक डेटासेट का वर्णन करता है। उदाहरण के लिए,
    <dataset type="EDDGridFromDap" datasetID="erdPHssta8day" active="true"> ... </dataset>  

वहाँ अपने डेटासेट टैग के किसी भी नंबर हो सकता हैdatasets.xmlफ़ाइल तीन विशेषताएँ MAY एक के भीतर दिखाई देते हैं<डेटासेट> टैग:  

  • टाइप a प्रकार " एक के भीतर एक REQUIRED विशेषता है<Dataset> में टैगdatasets.xmlजो डेटासेट प्रकार की पहचान करता है (उदाहरण के लिए, क्या यह एक हैEDDGrid/gridded या EDDTable/tabular डेटासेट) और डेटा का स्रोत (उदाहरण के लिए, एक डेटाबेस, फाइलें, या रिमोटOPeNDAPसर्वर) । देखें डेटासेट प्रकार की सूची ।  

डेटासेट आईडी

  • datasetID(a) ADatasetID " एक के भीतर एक REQUIRED विशेषता है<डेटासेट> टैग जो एक छोटा (आमतौर पर) असाइन करता है<15 वर्ण), अद्वितीय, एक डेटासेट के नाम की पहचान।
    • The The most of thedatasetIDMUST एक अक्षर है (A-Z, a-z) इसके बाद किसी भी संख्या में A-Z, A-Z, 0-9 और \_ (लेकिन अगर सबसे अच्छा है)<32 वर्ण कुल)।
    • डेटासेट आईडी केस सेंसिटिव हैं, लेकिन दो नहीं बनाते हैंdatasetIDकेवल ऊपरी / निचले अक्षरों में भिन्न होता है। यह विंडोज कंप्यूटर पर समस्या पैदा करेगा (आपका और/या एक उपयोगकर्ता का कंप्यूटर) ।
    • सर्वश्रेष्ठ अभ्यास: हम अनुशंसा करते हैंकैमल केस
    • सर्वश्रेष्ठ अभ्यास: हम अनुशंसा करते हैं कि पहला भाग स्रोत संस्थान के नाम का संक्षिप्त या संक्षिप्तीकरण हो और दूसरा हिस्सा डेटासेट के नाम का संक्षिप्त नाम या संक्षिप्त नाम हो। जब संभव हो, तो हम एक ऐसा नाम बनाते हैं जो डेटासेट के लिए स्रोत के नाम को दर्शाता है। उदाहरण के लिए, हम इस्तेमाल कियाdatasetID="erdph"ssta8dayNOAA NMFS SWFSCपर्यावरण अनुसंधान प्रभाग (ERD) जिसे उपग्रह / पीएच / के स्रोत द्वारा नामित किया गया हैsst8 दिन।
    • यदि आप डेटासेट का नाम बदल रहे हैं, तो पुराने डेटासेट (पुराने नाम के साथ) अभी भी जीना होगाERDDAP। यह एक "orphan" डेटासेट है, क्योंकि इसमें इसके लिए विनिर्देशdatasets.xmlअब चला गया है। इससे निपटना चाहिए:
      1. के लिएERDDAP™v2.19 और बाद में, आपको कुछ भी करने की आवश्यकता नहीं है।ERDDAP™स्वचालित रूप से इन अनाथ डेटासेट को हटा देगा।
      2. के लिएERDDAP™v2.18 और इससे पहले, आपको अनाथ डेटासेट को हटाने के लिए कुछ करना होगा: एक सक्रिय बनाएं
                <dataset type="EDDTableFromNcFiles" datasetID="*theOldName*" active="false" />  

अगले प्रमुख भार के बाद डेटासेट पुराने डेटासेट निष्क्रिय होने के बाद आप उस टैग को हटा सकते हैं।  

सक्रिय

  • सक्रिय बोरान " एक के भीतर एक वैकल्पिक विशेषता है<Dataset> में टैगdatasets.xmlजो इंगित करता है कि डेटासेट सक्रिय है (में उपयोग के लिए पात्रERDDAP) नहीं
    • मान्य मान सही हैं (डिफ़ॉल्ट) और झूठी।
    • चूंकि डिफ़ॉल्ट सही है, इसलिए आपको इस विशेषता का उपयोग करने की आवश्यकता नहीं है जब तक आप अस्थायी रूप से या स्थायी रूप से इस डेटासेट को हटा नहीं सकतेERDDAP।
    • यदि आप एक सक्रिय \true" डेटासेट को हटाते हैंdatasets.xmlडेटासेट अभी भी सक्रिय हो जाएगाERDDAP™लेकिन अपडेट नहीं किया जाएगा। ऐसा डेटासेट एक "अनाथ" होगा और इसे स्थिति के रूप में सूचीबद्ध किया जाएगा। एचटीएमएल वेब पेज डेटासेट की सूची के ठीक नीचे जो लोड करने में विफल रहा।
    • यदि आप सक्रिय स्थापित करते हैंERDDAP™अगली बार डेटासेट को निष्क्रिय करने के लिए यह डेटासेट अद्यतन करने की कोशिश करता है। जब आप ऐसा करते हैं,ERDDAP™यह डाटासेट के बारे में संग्रहीत किसी भी जानकारी को नहीं फेंक सकता है और निश्चित रूप से वास्तविक डेटा के लिए कुछ भी नहीं करता है।
    • डेटासेट को दूर करने के लिएERDDAP™, देखेंफोर्स डेटासेट हटाने।  

** कई टैग बीच दिखाई दे सकते हैं<डेटासेट> और</dataset> टैग। **
इसमें कुछ बदलाव होते हैं जिनमें टैग किस प्रकार के डेटासेट द्वारा अनुमति दी जाती है। किसी विशिष्ट के लिए प्रलेखन देखेंडेटासेट का प्रकारविवरण के लिए।

<सुलभ To>

  • [ ** <सुलभ To> ** ] (#accessibleto) एक के भीतर एक वैकल्पिक टैग है<डेटासेट> टैग जो एक अल्पविराम-अलग सूची को निर्दिष्ट करता हैभूमिकाजो इस डेटासेट तक पहुंच की अनुमति है। उदाहरण के लिए,
    <accessibleTo>RASmith, NEJones</accessibleTo>  
    • यह हिस्सा हैERDDAP'सुरक्षा प्रणालीकुछ उपयोगकर्ताओं को कुछ डेटासेट तक पहुंच को प्रतिबंधित करने के लिए।
    • यदि यह टैग मौजूद नहीं है, तो सभी उपयोगकर्ता (भले ही वे लॉग इन न हों) इस डेटासेट तक पहुंच होगी।
    • यदि यह टैग मौजूद है, तो यह डेटासेट केवल लॉग-इन उपयोगकर्ताओं के लिए दिखाई देगा, जिनके पास निर्दिष्ट भूमिकाओं में से एक है। यह डेटासेट उन उपयोगकर्ताओं के लिए दिखाई नहीं देगा जो लॉग इन नहीं हैं।
    • प्रत्येक उपयोगकर्ता जो लॉग इन करता है उसे स्वचालित रूप से भूमिका दी जाती है\[लॉग इन में\]क्या है?<उपयोगकर्ता> उनके लिए टैगdatasets.xmlनहीं तो अगर कोई डेटासेट दिया गया है
        <accessibleTo>\\[anyoneLoggedIn\\]</accessibleTo>  

तब कोई भी उपयोगकर्ता जो लॉग इन होता है उसे उस डेटासेट तक पहुंचने के लिए अधिकृत किया जाएगा, भले ही कोई डेटासेट न हो<उपयोगकर्ता> उनके लिए टैगdatasets.xml।  

<graphsAccessibleTo>

  • [ ** <graphsAccessibleTo ** ] (#graphsaccessibleto) एक के भीतर एक वैकल्पिक टैग है<Dataset> में टैगdatasets.xmlजो यह निर्धारित करता है कि डेटासेट के लिए ग्राफिक्स और मेटाडाटा जनता के लिए उपलब्ध हैं। यह डाटासेट के आंशिक रूप से ओवरराइड करने का एक तरीका प्रदान करता है [<सुलभ (#accessibleto) सेटिंग अनुमत मान हैं:
    • ऑटो यह मान (या किसी की अनुपस्थिति)<graphsAccessibleTo> डेटासेट के लिए टैग) डेटासेट से ग्राफ़ और मेटाडाटा तक पहुंच बनाता है डेटासेट की नकल करता है<सुलभ to> सेटिंग इसलिए यदि डेटासेट निजी है, तो इसका ग्राफ और मेटाडाटा निजी होगा। और अगर डेटासेट सार्वजनिक है, तो इसका ग्राफ और मेटाडाटा सार्वजनिक होगा।
    • सार्वजनिक -- यह सेटिंग किसी के लिए डेटासेट के ग्राफ़ और मेटाडाटा को सुलभ बनाती है, यहां तक कि उन उपयोगकर्ताओं को जो लॉग इन नहीं हैं, भले ही डेटासेट अन्यथा निजी हो क्योंकि इसमें कोई डेटासेट हो।<सुलभ To> टैग।  

<सुलभ ViaFiles>

यदि मूल्य सही है,ERDDAP™ऐसा करने से उपयोगकर्ता डेटासेट के स्रोत डेटा फ़ाइलों को ब्राउज़ और डाउनलोड कर सकते हैंERDDAP'"files"प्रणाली। देखें"files"प्रणालीदस्तावेज़ीकरणअधिक जानकारी के लिए।

डिफ़ॉल्ट मान<सुलभ ViaFiles> से आता है<डिफ़ॉल्टAccessibleViaFiles> मेंसाइटमैप। यह झूठी का एक डिफ़ॉल्ट मान है, लेकिन हम अनुशंसा करते हैं कि आप उस टैग को अपने सेटअप.xml में सही मूल्य के साथ जोड़ दें।

सिफारिश -- हम अनुशंसा करते हैं कि सभी प्रासंगिक डेटासेट को सेटिंग द्वारा फ़ाइलों सिस्टम के माध्यम से सुलभ बनाया जा सके।<डिफ़ॉल्टAccessibleViaFiles> सेटअप.xml में सच करने के लिए क्योंकि उपयोगकर्ताओं का एक समूह है जिसके लिए यह डेटा प्राप्त करने का पसंदीदा तरीका है। अन्य कारणों में,"files"सिस्टम उपयोगकर्ताओं को यह देखने के लिए आसान बनाता है कि कौन से फाइलें उपलब्ध हैं और जब वे बदल जाते हैं, तो इस प्रकार उपयोगकर्ता को संपूर्ण डेटासेट की अपनी खुद की प्रति बनाए रखने के लिए यह आसान बना देता है। यदि आप आम तौर पर डेटासेट को फ़ाइलों के माध्यम से सुलभ बनाना चाहते हैं, तो सेट करें<डिफ़ॉल्टAccessibleViaFiles> झूठी करने के लिए। किसी भी मामले में, बस उपयोग करें<सुलभ ViaFiles> कुछ डेटासेट के लिए जो सामान्य नीति के अपवाद हैं, द्वारा निर्धारित<डिफ़ॉल्टAccessibleViaFiles> (उदाहरण के लिए, जब डेटासेट का उपयोग करता है.ncएमएलजो वास्तव में उपयोगकर्ताओं के लिए उपयोगी नहीं हैं) ।  

<सुलभ वायाWMS& gt;

  • [ ** <सुलभ वायाWMS> ** ] (#accessibleviawms) एक के भीतर एक वैकल्पिक टैग है<Dataset> में टैगdatasets.xmlसभी के लिएEDDGridउपवर्ग यह सच का मान हो सकता है (डिफ़ॉल्ट) या झूठा। उदाहरण के लिए,
    <accessibleViaWMS>true</accessibleViaWMS>  

यदि मान गलत है,ERDDAP'WMSसर्वर इस डेटासेट के लिए उपलब्ध नहीं होगा। यह आमतौर पर उन डेटासेटों के लिए उपयोग किया जाता है जिनमें 180 से अधिक लंबे समय तक मान होते हैं। (जो तकनीकी रूप से अमान्य हैWMSसेवाएं) , और जिसके लिए आप पूरी तरह से रेंज -180 से 180 तक की दूरी पर डेटासेट के एक संस्करण की पेशकश कर रहे हैंEDDGridLonPM180। यदि मूल्य सही है,ERDDAP™के माध्यम से उपलब्ध डेटासेट बनाने की कोशिश करेंगेERDDAP'WMSसर्वर लेकिन अगर डेटासेट के लिए पूरी तरह से अनुपयुक्त हैWMS (उदाहरण के लिए, कोई लम्बाई या अक्षांश डेटा नहीं है) तब डेटासेट के माध्यम से उपलब्ध नहीं होगाERDDAP'WMSसर्वर, इस सेटिंग की परवाह किए बिना।  

<जोड़ें चर कहाँ>

  • [<AddVariablesWhere> (#addvariableswhere) भीतर एक वैकल्पिक टैग है<सभी EDDTable डेटासेट के लिए डेटासेट> टैग।

किसी भी EDDTable Dataset के लिए अनुरोधों को शामिल किया जा सकता है &add चर कहाँ (" विशेषता नाम "," विशेषता मूल्य ") कौन कहता हैERDDAP™डेटासेट में सभी चर जोड़ने के लिए जहां विशेषताName=attributeValue अनुरोधित चर की सूची के लिए। उदाहरण के लिए, यदि कोई उपयोगकर्ता जोड़ता है और खाता है चर कहाँ ("ioos\_category"Wind") एक क्वेरी के लिए,ERDDAPडेटासेट में सभी चर जोड़े जाएंगे जिनके पास एक हैioos\_category=Wind विशेषता अनुरोध चर की सूची के लिए (उदाहरण के लिए, विंडस्पीड, विंडडायरेक्शन, विंडगस्टस्पीड) । विशेषता नाम और विशेषता मूल्य मामले-संवेदनशील होते हैं।

मेंdatasets.xmlयदि किसी डेटासेट के लिए dataset.xml का हिस्सा है, तो डेटासेट का हिस्सा है।

<addVariablesWhere>*attributeNamesCSV*<addVariablesWhere>  

उदाहरण के लिए,

<addVariablesWhere>ioos\\_category,units<addVariablesWhere>  

डाटा एक्सेस फॉर्म (Web page) डेटासेट के लिए एक विजेट शामिल होगा (प्रत्येक विशेषता के लिएName अल्पविराम-अलग सूची में) वेरिएबल्स की सूची के ठीक नीचे जो उपयोगकर्ताओं को एक विशेषता मान निर्दिष्ट करने देता है। यदि उपयोगकर्ता एक या एक से अधिक विशेषता नामों के लिए एक विशेषता मान का चयन करता है, तो उन्हें &add के माध्यम से अनुरोध पर जोड़ा जाएगा चर कहाँ (" विशेषता नाम "," विशेषता मूल्य ") । इस प्रकार, इस टैग मेंdatasets.xmlआपको विशेषता नामों की सूची निर्दिष्ट करने देता है जो उस डेटासेट के लिए डेटा एक्सेस फॉर्म पर दिखाई देगा और उपयोगकर्ताओं को जोड़ने के लिए आसान बनाता है जहां अनुरोध के लिए कार्य करता है। The The most of the विशेषताNamesCSV सूची केस-संवेदनशील है।

<ऊंचाई मीटरPerSourceUnit>

  • [ ** <ऊंचाई मीटरPerSourceUnit> ** ] (#altitudemeterspersourceunit) भीतर एक वैकल्पिक टैग है<डेटासेट में डेटासेट> टैग। EDDTableFrom के लिए xxmlSOSडेटासेट (केवल!) यह एक संख्या को निर्दिष्ट करता है जो स्रोत ऊंचाई या गहराई मूल्यों द्वारा उन्हें ऊंचाई मूल्यों में परिवर्तित करने के लिए गुणा किया जाता है (समुद्र तल से ऊपर मीटर) । उदाहरण के लिए,
    <altitudeMetersPerSourceUnit>-1</altitudeMetersPerSourceUnit>  

यह टैग MUST का इस्तेमाल किया जा सकता है यदि डेटासेट का ऊर्ध्वाधर अक्ष मान मीटर, सकारात्मक = अप नहीं हैं। अन्यथा, यह वैकल्पिक है, क्योंकि डिफ़ॉल्ट मान 1 है। उदाहरण के लिए,

  • यदि स्रोत पहले से ही समुद्र तल के ऊपर मीटर में मापा जाता है, तो 1 का उपयोग करें (या इस टैग का उपयोग नहीं करते, क्योंकि 1 डिफ़ॉल्ट मान है) ।
  • यदि स्रोत समुद्र तल से नीचे मीटर में मापा जाता है, तो -1 का उपयोग करें।
    <altitudeMetersPerSourceUnit>-1</altitudeMetersPerSourceUnit>
  • यदि स्रोत समुद्र तल से ऊपर किमी में मापा जाता है, तो 0.001 का उपयोग करें।  

<डिफ़ॉल्टDataQuery>

  • [ ** <डिफ़ॉल्टDataQuery> ** ] (#defaultdataquery) एक के भीतर एक वैकल्पिक टैग है<Dataset> में टैगdatasets.xmlवह कहता हैERDDAP™निर्दिष्ट क्वेरी का उपयोग करने के लिए (" के बाद यूआरएल का हिस्सा?) अगर .html फ़ाइल प्रकार (डाटा एक्सेस फॉर्म) बिना किसी प्रश्न के अनुरोध किया जाता है।
    • आपको शायद ही कभी इसका उपयोग करने की आवश्यकता होगी।
    • आपको XML-encode की आवश्यकता है (नहीं) चूंकि वे XML दस्तावेज़ में हैं, डिफ़ॉल्ट क्वेरीज़। उदाहरण के लिए, और हो जाता है &<होना<, > हो जाता है & gt;
    • कृपया अपना काम चेक करें। यह एक गलती करने के लिए आसान है और आप क्या चाहते हैं नहीं मिलता है।ERDDAP™अपनी त्रुटियों को साफ करने की कोशिश करेंगे - लेकिन उस पर भरोसा न करें, क्योंकि\*कैसे\*यह साफ हो सकता है।
    • ग्रिडडैप डेटासेट के लिए, इसका एक सामान्य उपयोग एक अलग डिफ़ॉल्ट गहराई या ऊंचाई आयाम मान निर्दिष्ट करना है (उदाहरण के लिए,\[0\]इसके बजाय\[अंतिम\]) । किसी भी मामले में, आपको हमेशा सभी चरों को सूचीबद्ध करना चाहिए, हमेशा सभी चरों के लिए समान आयाम मानों का उपयोग करें, और लगभग हमेशा उपयोग करें।\[0\],\[अंतिम\]या\[0:\]आयाम मान के लिए। उदाहरण के लिए:
        <defaultDataQuery>u\\[last\\]\\[0\\]\\[0:last\\]\\[0:last\\],v\\[last\\]\\[0\\]\\[0:last\\]\\[0:last\\]</defaultDataQuery>
    • के लिएtabledapडेटासेट, यदि आप किसी भी बाधा को निर्दिष्ट नहीं करते हैं, तो अनुरोध डेटासेट के आधार पर पूरे डेटासेट को वापस कर देगा। यदि आप किसी भी बाधा को निर्दिष्ट नहीं करना चाहते हैं, बजाय खाली है<डिफ़ॉल्टDataQuery> (जो डिफ़ॉल्ट रूप से निर्दिष्ट नहीं है DataQuery) , आपको उन सभी चरों को स्पष्ट रूप से सूचीबद्ध करने की आवश्यकता है जिन्हें आप डिफ़ॉल्टDataQuery में शामिल करना चाहते हैं।
    • के लिएtabledapडेटासेट, इसका सबसे आम उपयोग एक अलग डिफ़ॉल्ट समय सीमा निर्दिष्ट करना है (अधिकतम (समय) उदाहरण के लिए, & समय> = अधिकतम (समय) 1 दिन, या अब के सापेक्ष, उदाहरण के लिए, & समय>=now-1 दिन) । याद रखें कि कोई डेटा चर का अनुरोध करना सभी डेटा चर को निर्दिष्ट करने के समान है, इसलिए आमतौर पर आप नए समय की बाधा को निर्दिष्ट कर सकते हैं। उदाहरण के लिए:
        <defaultDataQuery>&amp;time&gt;=max(time)-1day</defaultDataQuery>  

या

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

<डिफ़ॉल्टग्राफ क्वेरी>

  • [ ** <डिफ़ॉल्टग्राफ क्वेरी> ** ] (#defaultgraphquery) एक के भीतर एक वैकल्पिक टैग है<Dataset> में टैगdatasets.xmlवह कहता हैERDDAP™निर्दिष्ट क्वेरी का उपयोग करने के लिए (" के बाद यूआरएल का हिस्सा?) यदि फ़ाइल .graph प्रकार (मेक A Graph Form) बिना किसी प्रश्न के अनुरोध किया जाता है।
    • आपको शायद ही कभी इसका उपयोग करने की आवश्यकता होगी।
    • आपको XML-encode की आवश्यकता है (नहीं) चूंकि वे XML दस्तावेज़ में हैं, डिफ़ॉल्ट क्वेरीज़। उदाहरण के लिए, और हो जाता है &<होना<, > हो जाता है & gt;
    • कृपया अपना काम चेक करें। यह एक गलती करने के लिए आसान है और आप क्या चाहते हैं नहीं मिलता है।ERDDAP™अपनी त्रुटियों को साफ करने की कोशिश करेंगे - लेकिन उस पर भरोसा न करें, क्योंकि\*कैसे\*यह साफ हो सकता है।
    • ग्रिडडैप डेटासेट के लिए, इसका सबसे आम उपयोग एक अलग डिफ़ॉल्ट गहराई या ऊंचाई आयाम मान निर्दिष्ट करना है (उदाहरण के लिए,\[0\]इसके बजाय\[अंतिम\]) और/या निर्दिष्ट करने के लिए कि एक विशिष्ट चर ग्राफ किया जा सकता है। किसी भी मामले में, आप लगभग हमेशा उपयोग करेंगे\[0\],\[अंतिम\]या\[0:\]आयाम मान के लिए। उदाहरण के लिए:
        <defaultGraphQuery>temp\\[last\\]\\[0\\]\\[0:last\\]\\[0:last\\]&amp;.draw=surface&amp;.vars=longitude|latitude|temp</defaultGraphQuery>  
    (लेकिन यह सब एक पंक्ति में डाल दिया)
    • के लिएtabledapडेटासेट, यदि आप किसी भी बाधा को निर्दिष्ट नहीं करते हैं, तो अनुरोध पूरे डेटासेट को ग्राफ़ करेगा, जो डेटासेट के आधार पर लंबे समय तक ले सकता है।
    • के लिएtabledapडेटासेट, इसका सबसे आम उपयोग एक अलग डिफ़ॉल्ट समय सीमा निर्दिष्ट करना है (अधिकतम (समय) उदाहरण के लिए, & समय> = अधिकतम (समय) 1 दिन, या अब के सापेक्ष, उदाहरण के लिए, & समय>=now-1 दिन) । याद रखें कि कोई डेटा चर का अनुरोध करना सभी डेटा चर को निर्दिष्ट करने के समान है, इसलिए आमतौर पर आप नए समय की बाधा को निर्दिष्ट कर सकते हैं। उदाहरण के लिए:
        <defaultGraphQuery>&amp;time&gt;=max(time)-1day</defaultGraphQuery>  

या

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

<आयामValuesInMemory>

  • [ ** <आयाम मानसून> ** ] (#dimensionvaluesinmemory) (सच (डिफ़ॉल्ट) या झूठ) एक वैकल्पिक और शायद ही कभी इस्तेमाल किया जाने वाला टैग भीतर है<किसी के लिए डेटासेट> टैगEDDGridडेटासेट जो बताता हैERDDAP™जहां आयाम के स्रोत मूल्यों को बनाए रखने के लिए (इसे भी जाना जाता हैaxisVariables) :

    • True = in मेमोरी (जो तेज़ है लेकिन अधिक मेमोरी का उपयोग करता है)
    • डिस्क पर झूठा = (जो धीमी है लेकिन कोई स्मृति का उपयोग नहीं करता है)

उदाहरण के लिए,

<dimensionValuesInMemory>false</dimensionValuesInMemory>  

आपको केवल झूठे के गैर-डिफ़ॉल्ट मूल्य के साथ इसका उपयोग करना चाहिए यदि आपकाERDDAP™बहुत बड़े आयामों के साथ बहुत सारे डेटासेट हैं (उदाहरण के लिए, लाखों मूल्य, उदाहरण के लिए, मेंEDDGridAudioFiles डेटासेट) औरERDDAP'In use स्मृति उपयोग हमेशा बहुत अधिक है। वर्तमान में मेमोरी देखें: वर्तमान में लाइन का उपयोग करना\[आपका डोमेन\]/erddap/status.htmlनिगरानी करने के लिएERDDAP™स्मृति उपयोग।  

<फ़ाइलTableInMemory>

  • [ ** <फ़ाइलTableInMemory> ** ] (#फ़ाइलटेबलइंमेमोरी) (सच या झूठ (डिफ़ॉल्ट) ) भीतर एक वैकल्पिक टैग है<किसी के लिए डेटासेट> टैगEDDGridFromFiles and EDDTable सेफाइल्स डेटासेट जो बताता हैERDDAP™कहाँ फ़ाइल रखने के लिए (जिसमें प्रत्येक स्रोत डेटा फ़ाइल के बारे में जानकारी है) :

    • True = in मेमोरी (जो तेज़ है लेकिन अधिक मेमोरी का उपयोग करता है)
    • डिस्क पर झूठा = (जो धीमी है लेकिन कोई स्मृति का उपयोग नहीं करता है)

उदाहरण के लिए,

<fileTableInMemory>true</fileTableInMemory>  

यदि आप इसे किसी भी डेटासेट के लिए सच करने के लिए सेट करते हैं, तो मेमोरी पर नजर रखें: वर्तमान में वर्तमान में लाइन का उपयोग करना\[आपका डोमेन\]/erddap/status.htmlयह सुनिश्चित करनाERDDAP™अभी भी बहुत सारी मुफ्त मेमोरी है।  

<fgdcFile>

  • [ ** <fgdcFile> ** ] (#Fgdcfile) एक के भीतर एक वैकल्पिक टैग है<Dataset> में टैगdatasets.xmlवह कहता हैERDDAP™इसके बजाय पूर्व निर्मित FGDC फाइल का उपयोग करनाERDDAP™फ़ाइल बनाने की कोशिश करें। उपयोग:
    <fgdcFile>*fullFileName*</fgdcFile>  

पूर्ण फ़ाइल नाम एक स्थानीय फ़ाइल को संदर्भित कर सकते हैं (कहीं सर्वर की फ़ाइल प्रणाली पर) या किसी दूरस्थ फ़ाइल का यूआरएल। अगर पूर्ण फ़ाइल नाम \="" या फ़ाइल नहीं मिली है, डेटासेट में FGDC मेटाडाटा नहीं होगा। इसलिए यदि आप एक विशिष्ट डेटासेट के लिए FGDC मेटाडाटा को दबाना चाहते हैं तो यह भी उपयोगी है। या, आप डाल सकते हैं<FgdcActive>false</fgdcActive> सेटअप.xml में बताने के लिएERDDAP™किसी भी डेटासेट के लिए FGDC मेटाडाटा प्रदान नहीं करना चाहिए।  

<iso19115 फ़ाइल & gt;

  • [ ** <iso19115File> ** ] (#iso19115file) एक के भीतर एक वैकल्पिक टैग है<Dataset> में टैगdatasets.xmlवह कहता हैERDDAP™इसके बजाय एक पूर्व निर्मित ISO 19115 फाइल का उपयोग करनाERDDAP™फ़ाइल बनाने की कोशिश करें। उपयोग:
    <iso19115File>*fullFileName*</iso19115File>  
    पूर्ण फ़ाइल नाम एक स्थानीय फ़ाइल को संदर्भित कर सकते हैं (कहीं सर्वर की फ़ाइल प्रणाली पर) या किसी दूरस्थ फ़ाइल का यूआरएल। अगर पूर्ण फ़ाइल नाम \="" या फ़ाइल नहीं मिली है, डेटासेट में ISO 19115 मेटाडाटा नहीं होगा। तो यह भी उपयोगी है यदि आप एक विशिष्ट डेटासेट के लिए ISO 19115 मेटाडाटा को दबाना चाहते हैं। या, आप डाल सकते हैं<iso19115Active>false</iso19115Active> सेटअप.xml में बताने के लिएERDDAP™किसी भी डेटासेट के लिए आईएसओ 19115 मेटाडाटा प्रदान करने के लिए नहीं।  

<मैच NDigits>

  • [ ** <मैच AxisNDigits> ** ] (#Matchaxisndigits) एक के भीतर एक OPTIONAL टैग हैEDDGrid <Dataset> टैग के लिएEDDGridडेटासेट जो एकत्रीकरण हैं, उदाहरण के लिए, फ़ाइलों की एकत्रीकरण। प्रत्येक बार डेटासेट को पुनः लोड किया जाता है,ERDDAP™जाँच करता है कि एकत्रीकरण के प्रत्येक घटक के अक्ष मान समान हैं। परीक्षण की परिशुद्धता द्वारा निर्धारित की जाती हैमैच AxisNDigits, जो अंकों की कुल संख्या को निर्दिष्ट करता है जिसे डबल परिशुद्धता अक्ष मानों का परीक्षण करते समय मिलान करना चाहिए, 0 - 18 (डिफ़ॉल्ट) । जब फ्लोट अक्ष मूल्यों का परीक्षण किया जाता है, तो परीक्षण मैच के साथ किया जाता हैAxisNDigits/2 अंक। 18 या उससे अधिक का मान बताता हैEDDGridसटीक परीक्षण करना। 0 का मानEDDGridकिसी भी परीक्षण करने के लिए, जिसे नीचे वर्णित किए गए अनुसार अनुशंसित नहीं है।

हालांकिEDDGridएकत्रीकरण के घटकों को थोड़ा अलग अक्ष मान होने की अनुमति देता है, केवल अक्ष मूल्यों का एक सेट उपयोगकर्ता को दिखाया जाता है। सेट उसी घटक से है जो डेटासेट के स्रोत मेटाडाटा प्रदान करता है। उदाहरण के लिए,EDDGridFromFiles datasets, कि द्वारा निर्दिष्ट है<MetadataFrom> सेटिंग (डिफ़ॉल्ट=last) ।

मैच का उपयोगAxisNDigits=0 ज्यादातर मामलों में दृढ़ता से हतोत्साहित है, क्योंकि यह सभी जाँच बंद हो जाता है। यहां तक कि न्यूनतम जाँच उपयोगी है क्योंकि यह सुनिश्चित करता है कि घटक एकत्र करने के लिए उपयुक्त हैं। हम सभी मानते हैं कि सभी घटक उपयुक्त हैं, लेकिन यह हमेशा ऐसा नहीं है। इस प्रकार यह एक महत्वपूर्ण पवित्रता परीक्षण है। मैच के मान भी AxisNDigits1, 2, 3 या 4 को हतोत्साहित किया जाता है क्योंकि विभिन्न अक्ष मान अक्सर संकेत देते हैं कि घटक बनाए गए थे। (क्या?) एक अलग तरीका है और इस प्रकार एकत्रीकरण के लिए उपयुक्त नहीं है।

एक ऐसा मामला है जहां मैच का उपयोग करनाAxisNDigits\=0 उपयोगी और अनुशंसित है: दूरस्थ फ़ाइलों के एकत्रीकरण के साथ, उदाहरण के लिए, S3 बाल्टी में डेटा। इस मामले में, यदि डेटासेट कैशफ्रॉमयूरल, कैशSizeGB, मैचAxisNDigits\=0, और अगर डेटासेट कैशफ्रॉमयूरल, कैशSizeGB, मैच का उपयोग करता है, तो AxisNDigits\=0, औरEDDGridसेफाइल्स सिस्टम के लिएद्वारा एकत्रीकरण फ़ाइल का नामफिरEDDGridएकत्रीकरण करने के लिए सभी दूरस्थ फ़ाइलों को पढ़ने की जरूरत नहीं है। यह S3 बाल्टी में डेटासेट से बहुत जल्दी लोड करने की अनुमति देता है (धीरे-धीरे अगरEDDGridसभी फ़ाइलों को डाउनलोड और पढ़ने के लिए है) ।

<nThreads>

  • शुरूERDDAP™संस्करण 2.00, जब EDDTableFromFiles के किसी भी उपवर्ग याEDDGridइसके स्रोत से डेटा पढ़ता है, यह डेटा का एक हिस्सा पढ़ सकता है (उदाहरण के लिए, एक स्रोत फ़ाइल) समय (एक धागे में) (यह डिफ़ॉल्ट है) डेटा का एक से अधिक हिस्सा (उदाहरण के लिए 2+ स्रोत फ़ाइलें) समय (2 या अधिक धागे में) प्रत्येक अनुरोध को संसाधित करते समय।  
    • अंगूठे का नियम: अधिकांश प्रणालियों पर अधिकांश डेटासेट के लिए, nThreads=1, डिफ़ॉल्ट का उपयोग करें। यदि आपके पास एक शक्तिशाली कंप्यूटर है (सीपीयू कोर के बहुत सारे, स्मृति के बहुत सारे) , फिर nThreads को 2, 3, 4, या उच्च पर सेट करने पर विचार करें (लेकिन कंप्यूटर में सीपीयू कोर की संख्या से अधिक नहीं) डेटासेट के लिए जो लाभ उठा सकते हैं:

      • अधिकांश EDDTableFromFiles डेटासेट को लाभ होगा।
      • डेटासेट जहां कुछ डेटा के एक हिस्से से पहले अंतराल का कारण बनता है, वास्तव में संसाधित किया जा सकता है, उदाहरण के लिए:
        • डेटासेट के साथबाह्य रूप से संपीड़ित (उदाहरण के लिए.gz) द्विआधारी (उदाहरण के लिए.nc) फ़ाइलें, क्योंकिERDDAP™फाइल को पढ़ने से पहले पूरी फाइल को डिकंप्रेस करना होगा।
        • डेटासेट जो उपयोग करते हैंकैशSizeGBक्योंकिERDDAP™इसे पढ़ने से पहले अक्सर फाइल को डाउनलोड करना पड़ता है।
        • डेटासेट एक उच्च बैंडविड्थ समानांतर फ़ाइल प्रणाली पर संग्रहीत डेटा फ़ाइलों के साथ, क्योंकि यह अनुरोध करते समय अधिक डेटा, तेज़ी से वितरित कर सकता है। समानांतर फ़ाइल प्रणालियों के उदाहरणों में शामिल हैंJBOD,पीएफ,GlusterFSअमेज़न S3, और गूगल क्लाउड स्टोरेज।  

चेतावनी: जब nThreads>1 का उपयोग करते हैं, तो ध्यान रखेंERDDAPमेमोरी उपयोग, थ्रेड उपयोग और समग्र जिम्मेदारी (देखेंERDDAP'स्थिति पृष्ठ') । नीचे इन मुद्दों के बारे में टिप्पणियां देखें।  

  • किसी दिए गए डेटासेट के लिए, यह nThread सेटिंग विभिन्न स्थानों से आ सकती है:

    • यदिdatasets.xmlएक डेटासेट के लिए एक हिस्सा है<nThreads> टैग (साथ में)<डेटासेट> टैग, वैश्विक विशेषता के रूप में नहीं) एक मूल्य के साथ> = 1, nThreads का वह मान प्रयोग किया जाता है। इसलिए, आप प्रत्येक डेटासेट के लिए एक अलग नंबर निर्दिष्ट कर सकते हैं।
    • अन्यथा, अगरdatasets.xmlहै<nTableThreads> टैग (EDDTable सेफ़िल्स डेटासेट) या<nGridThreads> टैग (के लिएEDDGridडेटासेट) मूल्य के साथ 1, बाहर<डेटासेट> टैग, nThreads का वह मान प्रयोग किया जाता है।
    • अन्यथा, 1 धागे का उपयोग किया जाता है, जो एक सुरक्षित विकल्प है क्योंकि यह स्मृति की सबसे छोटी राशि का उपयोग करता है।  

के लिएमूलERDDAP™स्थापना, हम उपयोग करते हैं <nTableThreads> 6</nTableThreads> (यह शक्तिशाली सर्वर है।) अब कठिन अनुरोध पिछले समय का 30% लेते हैं।  

मॉनिटर संसाधन उपयोग

जब आप विभिन्न nThread सेटिंग्स के साथ प्रयोग कर रहे हैं (शायद आपके लिए मुश्किल नमूना अनुरोध करनाERDDAP) , आप अपने कंप्यूटर के संसाधन उपयोग की निगरानी कर सकते हैं:

  • मैक पर, खोजकर्ता का उपयोग करें: अनुप्रयोग: उपयोगिताएँ: गतिविधि मॉनिटर
  • लिनक्स पर, शीर्ष का उपयोग करें
  • Windows 10 पर उपयोग करें Ctrl + Shift + Esc कार्य प्रबंधक खोलने के लिए  
चेतावनी: बढ़ी हुई प्रतिक्रिया

अलगाव में,ERDDAP™यदि nThreads=1 की तुलना में अधिक nThreads सेटिंग के साथ डेटासेट के अनुरोध को पूरा करेगा। लेकिन जबकि उस अनुरोध को संसाधित किया जा रहा है, अन्य उपयोगकर्ताओं के अन्य अनुरोधों को कुछ हद तक भीड़भाड़ दिया जाएगा और धीमी प्रतिक्रिया प्राप्त होगी। इसके अलावा, कबERDDAP™किसी दिए गए अनुरोध, अन्य कंप्यूटिंग संसाधनों का जवाब देता है (उदाहरण के लिए, डिस्क ड्राइव एक्सेस, नेटवर्क बैंडविड्थ) विशेष रूप से उच्च nThread सेटिंग्स के साथ सीमित हो सकता है। इस प्रकार उच्च nThread सेटिंग्स के साथ, एकाधिक अनुरोधों को संसाधित करने के दौरान समग्र प्रणाली उत्तरदायीता खराब हो जाएगी - यह उपयोगकर्ताओं के लिए बहुत परेशान हो सकता है! इस वजह से: कंप्यूटर में सीपीयू कोर की संख्या से कहीं अधिक nThread सेट नहीं किया गया। nThreads=1 प्रत्येक अनुरोध के बाद से सबसे उचित सेटिंग है (कई एक साथ अनुरोधों के बीच) कंप्यूटिंग संसाधनों का समान हिस्सा प्राप्त होगा। लेकिन अधिक शक्तिशाली कंप्यूटर, कम यह एक समस्या होगी।  

चेतावनी: उच्च मेमोरी उपयोगEDDGridडेटासेट

जबकि प्रसंस्करण अनुरोध सीधे nThreads सेटिंग के समान है। अंगूठे का एक यथोचित सुरक्षित नियम है: आपको सेट करने की आवश्यकता हैERDDAPमेमोरी सेटिंग्सकम से कम 2GB + (2GB) । कुछ डेटासेट के लिए कुछ अनुरोधों की तुलना में अधिक स्मृति की आवश्यकता होगी। उदाहरण के लिए, किसी के लिए nThreads=3 सेट करनाEDDGridडेटासेट का मतलब है कि -Xmx सेटिंग कम से कम -Xmx8000M होना चाहिए। यदि वह मेमोरी सेटिंग 3/4 से अधिक है तो कंप्यूटर की भौतिक मेमोरी, nThreads सेटिंग को कम करती है ताकि आप मेमोरी सेटिंग को कम कर सकें।

EDDTable डेटासेट के लिए थ्रेड प्रोसेसिंग अनुरोधों का मेमोरी उपयोग लगभग हमेशा कम होता है क्योंकि फाइलें आमतौर पर बहुत छोटी होती हैं। हालांकि, अगर किसी दिए गए EDDTable डेटासेट में बहुत बड़ा है (उदाहरण के लिए, > = 1 जीबी) डेटा फाइलें, फिर ऊपर की टिप्पणियां उन डेटासेट पर भी लागू होगी।

जो भी nThreads सेटिंग, अपने पर स्मृति उपयोग आँकड़ों पर करीबी नजर रखते हैंERDDAP'स्थिति पृष्ठ'। आपको कभी स्मृति उपयोग को अधिकतम करने के करीब नहीं आना चाहिएERDDAPअन्यथा गंभीर त्रुटियां और विफलताएं होंगी।

अस्थायी रूप से 1 में सेट करें

यदि वर्तमान मेमोरी का उपयोग थोड़ा अधिक होता है, तो इसका उपयोग थोड़ा अधिक होता है।ERDDAP™इस अनुरोध के लिए nThread सेट करेगा 1. इस प्रकार,ERDDAP™जब स्मृति दुर्लभ होती है तो स्मृति को संरक्षित करता है।  

Diminishing रिटर्न

nThreads सेटिंग को बढ़ाने के लिए रिटर्न कम कर रहे हैं: 2 धागे 1 से बेहतर तरीके से होंगे (यदि हम गतिशील ओवरक्लॉकिंग को अनदेखा करते हैं) । लेकिन 3 केवल 2 से बेहतर होगा। 4 केवल 3 से अधिक बेहतर होगा।

एक बड़ी EDDTable Dataset के लिए एक कठिन क्वेरी के एक परीक्षण में, 1, 2, 3, 4, 5, 6 धागे का उपयोग करते हुए प्रतिक्रिया समय 38, 36, 20, 18, 13, 11 सेकंड था। (अब हम उस सर्वर पर nTableThreads=6 का उपयोग करते हैं।)

nThreads=2: हालांकि, अक्सर nThreads=1 के बजाय nThreads=2 को निर्दिष्ट करने के लिए एक महत्वपूर्ण लाभ होता है, यह अक्सर किसी दिए गए उपयोगकर्ता के अनुरोध का जवाब देने के लिए आवश्यक घड़ी के समय में बहुत अंतर नहीं करेगा। कारण यह है: nThreads=1 के साथ, अधिकांश आधुनिक सीपीयू अक्सर होगागतिशील रूप से overclock (टर्बो बढ़ावा) सीपीयू की घड़ी की गति को अस्थायी रूप से बढ़ाने के लिए। इस प्रकार nThreads=1 के साथ, यदि आप nThreads=2 का उपयोग करते हैं तो एक कोर अक्सर दो कोर की तुलना में एक उच्च घड़ी की गति पर काम करेगा। भले ही, हम अभी भी सोचते हैं कि nThreads=1 के बजाय nThreads=2 का उपयोग करना बेहतर है, क्योंकि यह सेटिंग स्थितियों की एक विस्तृत विविधता में बेहतर परिणाम देगी। बेशक, यदि आपके कंप्यूटर में पर्याप्त सीपीयू कोर है, तो एक भी उच्च nThread सेटिंग बेहतर परिणाम प्राप्त करना चाहिए।

जैसा कि ऊपर बताया गया है, बहुत अधिक nThread सेटिंग्स कुछ अनुरोधों के लिए तेजी से प्रतिक्रियाएं उत्पन्न कर सकते हैं, लेकिन समग्र रूप से कम होने का जोखिमERDDAP™प्रतिक्रियात्मकता और उच्च स्मृति उपयोग (जैसा कि ऊपर बताया गया है) जबकि उन अनुरोधों को संसाधित किया जा रहा है इसका मतलब है कि यह आम तौर पर एक अच्छा विचार नहीं है।

सीपीयू कोर

आपको कभी भी कंप्यूटर के सीपीयू में सीपीयू कोर की संख्या से बड़ी संख्या में nThread सेट नहीं करना चाहिए। अनिवार्य रूप से सभी आधुनिक सीपीयू में एकाधिक कोर होते हैं (उदाहरण के लिए, 2, 4, या 8) । कुछ कंप्यूटरों में एकाधिक सीपीयू भी हैं (उदाहरण के लिए, 2 सीपीयू \* 4 कोर / सीपीयू = 8 सीपीयू कोर) । यह पता लगाने के लिए कि कंप्यूटर में कितने सीपीयू और कोर हैं:

  • मैक पर उपयोग करें विकल्प कुंजी : सेब मेनू: सिस्टम जानकारी
  • लिनक्स पर, बिल्ली /proc / cpuinfo का उपयोग करें
  • Windows 10 पर उपयोग करें Ctrl + Shift + Esc खोलने के लिए कार्य प्रबंधक: निष्पादन (लॉजिकल प्रोसेसर सीपीयू कोर की कुल संख्या को दर्शाता है)

हाँ, अधिकांश प्रोसेसर इन दिनों कहते हैं कि वे प्रति कोर 2 धागे का समर्थन करते हैं (माध्यमहाइपर-थ्रेडिंग) , लेकिन 2 धागे कंप्यूटिंग संसाधनों को साझा करते हैं, इसलिए आप भारी भार के तहत सीपीयू पर दो बार थ्रूपुट नहीं देखेंगे। उदाहरण के लिए, 4 कोर वाले एक सीपीयू वाला एक कंप्यूटर 8 धागे तक समर्थन देने का दावा कर सकता है, लेकिन आपको उस में nThreads=4 से अधिक कभी नहीं होना चाहिए।ERDDAP। याद रखें कि:

  • nThreads सेटिंग मेंERDDAP™प्रति अनुरोध है।ERDDAP™अक्सर एकाधिक अनुरोधों को एक साथ संभालती है।
  • ERDDAP™प्रक्रिया अनुरोध के अलावा अन्य चीजें करता है, उदाहरण के लिए, डेटासेट को फिर से लोड करें।
  • कबERDDAP™किसी दिए गए अनुरोध, अन्य कंप्यूटिंग संसाधनों का जवाब देता है (उदाहरण के लिए, डिस्क ड्राइव एक्सेस, नेटवर्क बैंडविड्थ) सीमित हो सकता है। जितना अधिक आप nThread सेट करते हैं, उतना अधिक संभावना है कि इन अन्य संसाधनों को अधिकतम किया जाएगा और धीमा हो जाएगाERDDAPसामान्य प्रतिक्रिया।
  • ऑपरेटिंग सिस्टम रन के अलावा अन्य चीजें करता हैERDDAP।

इसलिए कंप्यूटर के सीपीयू में कोर की संख्या से अधिक करने के लिए nThreads सेटिंग निर्धारित करने के लिए सबसे अच्छा नहीं है।  

आपका माइलेज मई वेरी (YMMV)

विभिन्न nThreads सेटिंग्स के परिणाम विभिन्न प्रणालियों पर विभिन्न डेटासेट के लिए विभिन्न अनुरोधों के लिए बहुत भिन्न होंगे। यदि आप वास्तव में विभिन्न nThreads सेटिंग्स के प्रभाव को जानना चाहते हैं, तो यथार्थवादी परीक्षण चलाएं।  

क्यों nThreads प्रति अनुरोध?

मैं आपसे कुछ सोच सकता हूं कि "क्या प्रति अनुरोध nThread है? यदि मैं इसे कोडित कर रहा हूं, तो मैं बेहतर प्रदर्शन के लिए एक स्थायी कार्यकर्ता थ्रेड पूल और मैसेजिंग कतार का उपयोग करूंगा। एक कार्यकर्ता थ्रेड पूल का उपयोग करने के साथ समस्या और एक मैसेजिंग कतार यह है कि एक कठिन अनुरोध कई धीमी कार्यों के साथ कतार को बाढ़ कर देगा। यह प्रभावी रूप से अवरुद्ध होगाERDDAP™आरंभिक अनुरोध होने तक अन्य अनुरोधों से संबंधित कार्यों पर भी काम शुरू करना (अनिवार्य रूप से) समाप्त हुआ। इस प्रकार, इसके बाद भी सरल अनुरोध धीरे-धीरे सुपर जवाब देंगे।ERDDAPअनुरोध के अनुसार nThreads के उपयोग से कंप्यूटिंग संसाधनों का बहुत उचित उपयोग होता है।  

nThreads बनाम एकाधिक कार्यकर्ता कंप्यूटर

दुर्भाग्यवश,ERDDAP'nThreads प्रणाली कभी भी कई श्रमिक कंप्यूटरों के माध्यम से सच समानांतर रूप में प्रभावी नहीं होगी, जिसमें प्रत्येक डेटा के एक हिस्से पर काम करता है, जिस तरह से Hadoop या अपाचे स्पार्क का उपयोग आमतौर पर किया जाता है। जब कार्य वास्तव में एकाधिक कंप्यूटरों के लिए समानांतर / वितरित होता है, तो प्रत्येक कंप्यूटर अपने कार्य के हिस्से पर अपने सभी संसाधनों का उपयोग कर सकता है। साथERDDAP'nThreads प्रणाली, प्रत्येक धागे समान कंप्यूटर की बैंडविड्थ, डिस्क ड्राइव, मेमोरी आदि के लिए प्रतिस्पर्धा कर रहा है। दुर्भाग्य से, हममें से अधिकांश के पास सेट अप करने या किराए पर लेने के लिए संसाधन या धन नहीं है (अमेज़न वेब सर्विसेज (एडब्ल्यूएस) Google क्लाउड प्लेटफ़ॉर्म (जीसीपी) ) कंप्यूटर के विशाल ग्रिड। इसके अलावा, एक रिलेशनल डेटाबेस के विपरीत जो किसी भी क्रम में परिणाम पंक्तियों को वापस करने की अनुमति देता है,ERDDAP™परिणामस्वरूप पंक्तियों को एक सुसंगत क्रम में वापस करने का वादा करता है। यह बाधा बनाता हैERDDAP'nThreads कार्यान्वयन कम कुशल. लेकिनERDDAP'nThread' कई मामलों में उपयोगी है।

हालांकि, बनाने के तरीके हैंERDDAP™एक बड़ी संख्या में अनुरोधों को जल्दी से संभालनाग्रिड / क्लस्टर / फेडरेशन ऑफERDDAPs।  

<पैलेट्स>

  • शुरूERDDAP™संस्करण 2.12,datasets.xmlशामिल कर सकते हैं<पैलेट्स> टैग (साथ)<erddapDatasets<पैलेट्स> टैग मान संदेशों से.xml (या संदेशों को उलट देता है.xml मान अगर टैग मेंdatasets.xmlखाली है) । यह आपको उपलब्ध पैलेटों की सूची बदलने देता है जबकिERDDAP™चल रहा है। यह आपको एक बदलाव करने देता है और जब आप एक नया संस्करण स्थापित करते हैं तो यह बनी रहती हैERDDAP। WARNING: पैलेट्स में सूचीबद्धdatasets.xmlसंदेशों में सूचीबद्ध पैलेटों का एक सुपरसेट होना चाहिए.xml; अन्यथाERDDAP™एक अपवाद फेंकना और रोक प्रसंस्करणdatasets.xml। यह सुनिश्चित करता है कि सभीERDDAP™प्रतिष्ठान कम से कम एक ही कोर पैलेट का समर्थन करते हैं। चेतावनी:ERDDAP™यह जांचता है कि पैलेट्स फ़ाइलों को संदेशों में निर्दिष्ट किया गया है। xml वास्तव में मौजूद है, लेकिन यह में सूचीबद्ध पैलेट फ़ाइलों की जांच नहीं करता है।datasets.xml। यह सुनिश्चित करने की आपकी ज़िम्मेदारी है कि फाइलें मौजूद हैं।

इसके अलावा शुरूERDDAP™संस्करण 2.12, यदि आप एक cptfiles subdirectory बनाते हैंERDDAP™सामग्री निर्देशिकाERDDAP™उस निर्देशिका में सभी \*.cpt फ़ाइलों को कॉपी करेगा\[tomcat\]/webapps/erddap/WEB-INF/cptfiles निर्देशिका हर बारERDDAP™शुरू होता है। इस प्रकार, यदि आप उस निर्देशिका में कस्टम cpt फ़ाइलों को डालते हैं, तो उन फ़ाइलों का उपयोग करके किया जाएगाERDDAP™, अपने हिस्से पर कोई अतिरिक्त प्रयास नहीं है, भले ही आप एक नया संस्करण स्थापित करेंERDDAP।

यदि आप अपने लिए कस्टम पैलेट जोड़ते हैंERDDAP™आपके पासEDDGridFromErddap and/or EDDTableFromErddap Datasets in your own time.ERDDAP™तब उपयोगकर्ता आपके कस्टम पैलेट विकल्प को देखेंगेERDDAP™एक Graph वेब पेज बनाएं, लेकिन अगर उपयोगकर्ता उन्हें उपयोग करने की कोशिश करता है, तो उन्हें डिफ़ॉल्ट के साथ एक ग्राफ मिलेगा (आमतौर पर इंद्रधनुष) पैलेट यह इसलिए है क्योंकि छवि रिमोट द्वारा बनाई गई हैERDDAP™जो कस्टम पैलेट नहीं है। अब केवल समाधान दूरस्थ ईमेल करने के लिए हैंERDDAP™प्रशासक अपने कस्टम पैलेट को उसके / उसके पास जोड़ने के लिएERDDAPया ईमेल क्रिस जॉन noaa.gov पर यह पूछने के लिए कि पैलेट को मानक में जोड़ा जाना चाहिएERDDAP™वितरण।

<OnChange>

  • [ ** <OnChange> ** ] (#onchange) एक के भीतर एक वैकल्पिक टैग है<Dataset> में टैगdatasets.xmlजब यह डेटासेट बनाया जाता है तो यह एक कार्रवाई को निर्दिष्ट करता है जो किया जाएगा (जबERDDAP™पुनरारंभ करना) जब भी यह डेटासेट किसी भी तरह से बदल जाता है।
    • वर्तमान में,EDDGridउपवर्ग, मेटाडाटा में कोई भी परिवर्तन या अक्ष चर में (उदाहरण के लिए, निकट-वास्तविक समय डेटा के लिए एक नया समय बिंदु) एक बदलाव माना जाता है, लेकिन डेटासेट का पुनः लोड एक बदलाव नहीं माना जाता है (खुद) ।
    • वर्तमान में, EDDTable subclasses के लिए, डेटासेट का कोई भी रीलोडिंग एक बदलाव माना जाता है।
    • वर्तमान में, केवल दो प्रकार के कार्यों की अनुमति है:
      • " http://" या " https://" -- यदि कार्रवाई शुरू होती है तो " http://" या " https://" ,ERDDAP™भेजेगाHTTP GETनिर्दिष्ट URL का अनुरोध करें। प्रतिक्रिया को नजरअंदाज कर दिया जाएगा। उदाहरण के लिए, यूआरएल कुछ करने के लिए कुछ अन्य वेब सेवा बता सकता है।
        • यदि URL में क्वेरी पार्ट है (" के बाद?) , यह पहले से ही होना चाहिएप्रतिशत encoded। आपको बाधाओं में विशेष वर्णों को कोडित करने की आवश्यकता है (प्रारंभिक '&' और मुख्य के अलावा'='बाधाओं में) %HHH के रूप में, जहां HH चरित्र का 2 अंक hexadecimal मान है। आमतौर पर, आपको बस कुछ punctuation अक्षरों को बदलने की आवश्यकता होती है: % में %25, और %26 में, "%22 में,<%3C में =%3D में>%3E में +%2B में,|%7C में\[%5B में\]%5D में,%20 में अंतरिक्ष, और # 127 से ऊपर के सभी पात्रों को अपने UTF-8 फॉर्म में परिवर्तित करें और फिर %HH प्रारूप में UTF-8 फॉर्म के प्रत्येक बाइट को कोडित करें। (मदद के लिए प्रोग्रामर से पूछें) । उदाहरण के लिए, &stationID>="41004" बन गयाstationID%3E =%2241004%22 जब आप एक्सेस करते हैं तो पर्सेंट एन्कोडिंग की आवश्यकता होती हैERDDAPएक ब्राउज़र के अलावा अन्य सॉफ्टवेयर के माध्यम से। ब्राउज़र आमतौर पर आपके लिए प्रतिशत एन्कोडिंग संभालते हैं। कुछ स्थितियों में, आपको A-Za-z0-9\_-! ' () \*, लेकिन अभी भी प्रारंभिक '&' या मुख्य कोड नहीं है'='बाधाओं में। प्रोग्रामिंग भाषाओं में ऐसा करने के लिए उपकरण हैं (उदाहरण के लिए, देखेंJava'java.net.URLEncoderऔरJavaस्क्रिप्टencodeURIComponent()] ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent ) ) और वहाँ रहे हैं उन वेबसाइटों के लिए जो आपके लिए प्रतिशत एनकोड / डीकोड करते हैं
        • चूंकिdatasets.xmlएक XML फ़ाइल है, आप MUST भी और सभी '&', '<यूआरएल में '&', '<',' और '>' प्रतिशत एन्कोडिंग के बाद।
        • उदाहरण: एक URL के लिए जिसे आप ब्राउज़र में टाइप कर सकते हैं: https://www.company.com/webService?department=R%26D&param2=value2
          आपको निर्दिष्ट करना चाहिए<OnChange> द्वारा टैग (एक पंक्ति पर)
            <onChange>https://www.company.com/webService?department=R%26D&amp;param2=value2</onChange>
      • मेल्टो: -- अगर कार्रवाई "mailto:" के साथ शुरू होती है,ERDDAP™बाद के ईमेल पते पर एक ईमेल भेजेगा, यह दर्शाता है कि डेटासेट को अद्यतन / परिवर्तित किया गया है। उदाहरण के लिए:<OnChange>mailto:john.smith@company.com</onChange> यदि आपके पास अच्छा कारण हैERDDAP™कुछ अन्य प्रकार की कार्रवाई का समर्थन करने के लिए, हमें एक ईमेल भेजें जिसे आप चाहते हैं।
    • यह टैग वैकल्पिक है। जैसा कि आप चाहते हैं उनमें से कई टैग हो सकते हैं। प्रत्येक कार्रवाई के लिए इन टैगों में से एक का उपयोग करें।
    • यह अनुरूप हैERDDAP'ई-मेल/URL सदस्यता प्रणाली, लेकिन इन कार्यों को लगातार संग्रहीत नहीं किया जाता है (यानी, वे केवल EDD ऑब्जेक्ट में संग्रहीत होते हैं) ।
    • एक सदस्यता को हटाने के लिए, बस उसे हटा दें<onChange> टैग। अगली बार डेटासेट को फिर से लोड किया जाता है।  

<ReloadEveryNMinutes>

  • [ ** <रीलोड हरमन मिनट> ** ] (#reloadeverynminutes) एक के भीतर एक वैकल्पिक टैग है<Dataset> में टैगdatasets.xmlलगभग सभी डेटासेट प्रकार जो निर्दिष्ट करते हैं कि कितनी बार डेटासेट को फिर से लोड किया जाना चाहिए। उदाहरण के लिए,
    <reloadEveryNMinutes>60</reloadEveryNMinutes>
    • आम तौर पर, डेटासेट जो अक्सर बदलते हैं (उदाहरण के लिए, नए डेटा फ़ाइलों को प्राप्त करें) अक्सर पुनः लोड किया जाना चाहिए, उदाहरण के लिए, हर 60 मिनट।

    • डेटासेट जो अपर्याप्त रूप से परिवर्तन करते हैं, उन्हें बार-बार पुनः लोड किया जाना चाहिए, उदाहरण के लिए, प्रत्येक 1440 मिनट (दैनिक) 10080 मिनट (साप्ताहिक) ।

    • यह टैग वैकल्पिक है, लेकिन अनुशंसित है। डिफ़ॉल्ट 10080 है।

    • उदाहरण है:<ReloadEveryNMinutes>1440</reload हरमन मिनट>

    • जब डेटासेट को फिर से लोड किया जाता है, तो सभी फाइलों में सभी फाइलें बड़ाParentDirectory / कैश / datasetID निर्देशिका हटा दी जाती है।

    • इससे कोई फर्क नहीं पड़ता कि यह क्या है, डेटासेट को अधिक बार लोड नहीं किया जाएगा<LoadDatasetsMinutes> (डिफ़ॉल्ट = 15) निर्दिष्ट के अनुसारसाइटमैप। इसलिए यदि आप चाहते हैं कि डेटासेट को बहुत बार फिर से लोड किया जाए, तो आपको पुनः लोड करने की आवश्यकता हैEveryNMinutes और loadDatasets MinMinutes to small value.

    • Reload स्थापित न करें न्यूनतम, क्योंकि समाप्त होने का समय होने की संभावना है (उदाहरण के लिए) 14:58 या 15:02, इसलिए डेटासेट केवल प्रमुख रीलोड के आधे हिस्से में पुनः लोड हो जाएगा। इसके बजाय, एक छोटा सा उपयोग करें (उदाहरण के लिए, 10) या बड़ा (उदाहरण के लिए, 20) रीलोड प्रत्येकNMinutes मान।

    • ReloadEveryNMinutes के बावजूद, आप मैन्युअल रूप से कह सकते हैंERDDAP™जितनी जल्दी हो सके एक विशिष्ट डेटासेट को पुनः लोड करनाझंडा फाइल

    • Curious प्रोग्रामर के लिएERDDAP™, सभी डेटासेट का पुनः लोड दो एकल उद्देश्य धागे से संभाला जाता है। एक धागा एक मामूली लोड शुरू करता है अगर यह एक झंडा फ़ाइल या एक प्रमुख फिर से लोड मिल जाता है (जो सभी डेटासेट को यह देखने के लिए चेक करता है कि उन्हें फिर से लोड करने की आवश्यकता है या नहीं।) । दूसरा धागा एक समय में डेटासेट का वास्तविक पुनः लोड करता है। ये धागे पृष्ठभूमि में काम करते हैं ताकि यह सुनिश्चित किया जा सके कि सभी डेटासेट को अद्यतन रखा गया है। थ्रेड जो वास्तव में रीलोड करता है, एक डेटासेट का एक नया संस्करण तैयार करता है, फिर इसे जगह में बदल देता है (अनिवार्य रूप से पुराने संस्करण को परमाणु रूप से बदल रहा है) । इसलिए यह बहुत संभव है कि घटनाओं का निम्नलिखित अनुक्रम होता है (यह एक अच्छी बात है) :

      1. ERDDAP™डेटासेट को फिर से लोड करना शुरू कर देता है (एक नया संस्करण बनाना) पृष्ठभूमि में।
      2. उपयोगकर्ता 'A' डेटासेट के लिए एक अनुरोध बनाता है।ERDDAP™प्रतिक्रिया बनाने के लिए डेटासेट के वर्तमान संस्करण का उपयोग करता है। (यह अच्छा है। उपयोगकर्ता के लिए कोई देरी नहीं थी, और डेटासेट का वर्तमान संस्करण कभी भी बहुत stale नहीं होना चाहिए।)
      3. ERDDAP™डेटासेट का नया पुनः लोड संस्करण तैयार करना और उस नए संस्करण को उत्पादन में बदल देना। बाद में सभी नए अनुरोधों को डेटासेट के नए संस्करण द्वारा संभाला जाता है। संगति के लिए, उपयोगकर्ता A का अनुरोध अभी भी मूल संस्करण से भरा जा रहा है।
      4. उपयोगकर्ता 'बी' डेटासेट का अनुरोध करता है औरERDDAP™प्रतिक्रिया बनाने के लिए डेटासेट के नए संस्करण का उपयोग करता है।
      5. अंततः उपयोगकर्ता A और उपयोगकर्ता B का अनुरोध पूरा हो गया है (शायद A's end पहले, शायद B's end पहले) ।

मैं किसी को कह सकता हूं, "जस्ट टू थर्ड्स! हे! यह लंगड़ा है! उन्हें यह निर्धारित करना चाहिए कि डेटासेट की पुनः लोड करने के लिए आवश्यकतानुसार कई धागे का उपयोग किया जाता है, इसलिए यह सब तेजी से हो जाता है और इसमें थोड़ा या कोई अंतराल नहीं होता है। हाँ और नहीं। समस्या यह है कि एक समय में एक से अधिक डेटासेट लोड करने से कई कठिन नई समस्याएं पैदा होती हैं। उन्हें हल करने या उससे निपटने की जरूरत है। वर्तमान प्रणाली अच्छी तरह से काम करती है और प्रबंधनीय समस्याएं होती हैं (उदाहरण के लिए, एक ध्वज से पहले अंतराल के लिए संभावित देखा जाता है) । (यदि आपको उनकी मदद की ज़रूरत है, तो हमें देखेंअतिरिक्त समर्थन प्राप्त करने पर अनुभाग।) संबंधितअपडेट हर्नमिलीसिस्टम प्रतिक्रिया धागे के भीतर काम करता है, इसलिए यह कई डेटासेट को अपडेट किया जा सकता है और करता है (पूर्ण पुनः लोड नहीं) एक साथ।

सक्रिय बनाम प्रतिक्रियाशील

ERDDAP'रीलोड सिस्टम सक्रिय है - डेटासेट जल्द ही उनके पुनः लोड होने के बाद लोड हो जाता है हर मिनट का समय ऊपर है (यानी, वे "महान" बन जाते हैं, लेकिन कभी भी बहुत अजीब नहीं) क्या डेटासेट उपयोगकर्ताओं से अनुरोध प्राप्त कर रहा है या नहीं। तोERDDAP™डेटासेट हमेशा अद्यतन होते हैं और उपयोग के लिए तैयार होते हैं। यह THREDDS के प्रतिक्रियाशील दृष्टिकोण के विपरीत है: एक उपयोगकर्ता का अनुरोध यह है कि THREDDS को यह जांचने के लिए कहता है कि क्या डेटासेट stale है? (यह बहुत सुन्दर हो सकता है) । यदि यह कहानी है तो THREDDS उपयोगकर्ता को प्रतीक्षा करता है (अक्सर कुछ मिनट के लिए) जबकि डेटासेट को पुनः लोड किया जाता है।

<अपडेट हर्नमिलिस>

  • [ ** <EveryNMillis ** ] (#updateeverynmillis) एक के भीतर एक वैकल्पिक टैग है<Dataset> में टैगdatasets.xmlकुछ डेटासेट प्रकार जो मदद करता हैERDDAP™डेटासेट के साथ काम करना जो अक्सर बदलते हैं (अक्सर के रूप में हर दूसरे) । विपरीतERDDAPनियमित, सक्रिय<रीलोड हरNMinutes (#reloadeverynminutes) प्रत्येक डेटासेट को पूरी तरह से लोड करने के लिए सिस्टम, यह वैकल्पिक अतिरिक्त प्रणाली प्रतिक्रियाशील है (एक उपयोगकर्ता अनुरोध द्वारा ट्रिगर) क्योंकि यह वृद्धिशील है (अद्यतन करने की जरूरत है कि सिर्फ सूचना अद्यतन करना) । उदाहरण के लिए, यदि कोई अनुरोध करने के लिएEDDGridFromDap dataset पिछले अद्यतन के बाद से मिलीसेकेंड की निर्दिष्ट संख्या से अधिक होता है,ERDDAP™यह देखना होगा कि क्या बाएं के लिए कोई नया मूल्य है (आमतौर पर"time") आयाम और यदि ऐसा हो तो उपयोगकर्ता के अनुरोध को संभालने से पहले उन नए मूल्यों को डाउनलोड करें। यह प्रणाली डेटा स्रोत पर न्यूनतम मांगों के साथ तेजी से बदलते डेटासेट को अद्यतन रखने में बहुत अच्छा है, लेकिन कुछ उपयोगकर्ता अनुरोधों के प्रसंस्करण को थोड़ा धीमा करने की लागत पर।
    • इस प्रणाली का उपयोग करने के लिए, जोड़ें (उदाहरण के लिए) :
      <updateEveryNMillis>1000</updateEveryNMillis>  

ठीक बाद<ReloadEveryNMinutes> में डेटासेट के लिए टैगdatasets.xml। आपके द्वारा निर्दिष्ट मिलीसेकंड की संख्या 1 जितना छोटा हो सकती है (यह सुनिश्चित करने के लिए कि डेटासेट हमेशा अप-टू-डेट है) । 0 का मान (डिफ़ॉल्ट) या नकारात्मक संख्या प्रणाली को बंद कर देती है।

  • उनकी वृद्धिशील प्रकृति के कारण, अद्यतन बहुत जल्दी समाप्त होना चाहिए, इसलिए उपयोगकर्ताओं को कभी भी लंबे समय तक इंतजार नहीं करना चाहिए।
  • यदि पिछले अद्यतन समाप्त होने से पहले दूसरा डेटा अनुरोध आता है, तो दूसरा अनुरोध दूसरे अपडेट को ट्रिगर नहीं करेगा।
  • प्रलेखन के दौरान, हम इन नए वृद्धिशील, आंशिक अद्यतनों के लिए नियमित, पूर्ण डेटासेट रीलोड के लिए "रीलोड" शब्द का उपयोग करने की कोशिश करेंगे।
  • परीक्षण प्रयोजनों के लिए, कुछ निदान log.txt करने के लिए मुद्रित कर रहे हैं अगर [[]<लॉग लेवल> (#loglevel) मेंdatasets.xml"सभी" के लिए सेट है।
  • यदि आप वृद्धिशील अद्यतन का उपयोग करते हैं और विशेष रूप से बाईं ओर (पहला) उदाहरण के लिए, समय, अक्ष बड़ा है, आप सेट करना चाहते हैं<ReloadEveryNMinutes> एक बड़ी संख्या में (1440?) इसलिए अद्यतन डेटासेट अप-टू-डेट रखने के लिए अधिकांश कार्य करते हैं, और पूरी तरह से लोड किया जाता है।
  • नोट: यह नया अपडेट सिस्टम मेटाडाटा अपडेट करता है (उदाहरण के लिए, समयactual\_range, समय \_coverage \_end, ...) लेकिन चालू नहीं हैचांग (ईमेल या स्पर्श यूआरएल) या परिवर्तनRSSफ़ीड (शायद यह होना चाहिए...) ।
  • सभी डेटासेट के लिए जो सबक्लास का उपयोग करते हैंEDDGridसेफिलऔरEDDTableFromFiles:
    • चेतावनी: जब आप इसे निर्देशिका में कॉपी करके एक डेटासेट में एक नई डेटा फ़ाइल जोड़ते हैं किERDDAP™लगता है कि वहाँ एक खतरा है किERDDAP™आंशिक रूप से लिखित फ़ाइल को नोटिस करेगा; इसे पढ़ने की कोशिश करें, लेकिन असफल क्योंकि फ़ाइल अधूरी है; फ़ाइल को "bad" फ़ाइल होने की घोषणा करती है और इसे हटा देती है। (अस्थायी रूप से) डेटासेट से। इससे बचने के लिए, हम पूरी तरह से सिफारिश कि आप एक अस्थायी नाम के साथ निर्देशिका में एक नई फाइल कॉपी करें (उदाहरण के लिए, 20150226.ncTmp) यह डेटासेट फ़ाइल से मेल नहीं खाता है NameRegex (डाउनलोड.nc) फिर फ़ाइल को सही नाम में बदलें (उदाहरण के लिए, 20150226.nc) । यदि आप इस दृष्टिकोण का उपयोग करते हैं तो,ERDDAP™अस्थायी फ़ाइल को अनदेखा करेगा और जब यह पूरा हो जाता है और उपयोग करने के लिए तैयार हो जाता है तो केवल सही नाम वाली फ़ाइल को नोटिस करेगा।
    • यदि आप मौजूदा डेटाफ़ाइलों को जगह में संशोधित करते हैं (उदाहरण के लिए, एक नया डेटा बिंदु जोड़ने के लिए) ,<अद्यतनEveryNMillis> अच्छी तरह से काम करेगा यदि परिवर्तन परमाणु रूप से दिखाई देते हैं (तत्काल) और फ़ाइल हमेशा एक वैध फ़ाइल है। उदाहरण के लिए, netcdf-java पुस्तकालय एक "क्लासिक" के असीमित आयाम को जोड़ती है.ncv3 फ़ाइल को परमाणु रूप से बनाने के लिए। <अद्यतनEveryNMillis> बुरी तरह से काम करेगा यदि फ़ाइल अवैध है जबकि परिवर्तन किया जा रहा है।
    • <अद्यतनEveryNMillis> डेटासेट के लिए अच्छी तरह से काम करेगा जहां एक या कुछ फाइलें थोड़ी मात्रा में बदल जाती हैं।
    • <अद्यतनEveryNMillis> डेटासेट के लिए खराब रूप से काम करेगा जहां फ़ाइलों की एक बड़ी संख्या थोड़ी मात्रा में बदल जाती है। (जब तक कि परिवर्तन परमाणु रूप से दिखाई देते हैं) । इन डेटासेटों के लिए, इसका उपयोग करना बेहतर है<अद्यतनEveryNMillis> और एक सेट करने के लिएझंडाबताने के लिएERDDAP™डेटासेट को फिर से लोड करने के लिए।
    • <EveryNMillis [[dot]in [[dot]in [[dot]in]in [[dot]]in [[dot]]]in [[dot]]]]]] [[dot]]in [[dot]]]]]] [[dot]]in [[dot]]]in [[dot]]]]]]]] [[dot]]]]]]]]] [[dot]]]]]]]]]] [[dot]]]]]]]]]] [[dot]in [[[dot]]]]]]]]in [[dot]]]]]]]]]]]]]]]]]]]]in [[:]]]]]]]]]]]]]]]]]]]]]]]] [[dot]in [[dot]in [[dot]]in [[dot]in [[dot]]]in [[dot]]]in [[dot]in [[dot]]]]]]]]]]]]]]]in [[dot]]]]]]]]]<subsetVariables> (#subsetvariables) । आम तौर पर, यह एक समस्या नहीं है, क्योंकिsubsetVariablesउन चीजों के बारे में जानकारी होती है जो अक्सर कभी-कभी बदलाव नहीं करते हैं (उदाहरण के लिए, स्टेशन के नाम, अक्षांश और देशांतरों की सूची) । यदिsubsetVariablesडेटा परिवर्तन (उदाहरण के लिए, जब डेटासेट में एक नया स्टेशन जोड़ा जाता है) , फिर संपर्क करेंध्वज यूआरएलडाटासेट के लिए बताने के लिएERDDAP™डेटासेट को फिर से लोड करने के लिए। अन्यथा,ERDDAP™नए सबसेट को नोटिस नहीं करेगा अगली बार जब तक डेटासेट को फिर से लोड नहीं किया जाता है तब तक परिवर्तनीय जानकारी<ReloadEveryNMinutes>।
    • हमारी सामान्य सिफारिश का उपयोग करना है:
        <reloadEveryNMinutes>1440</reloadEveryNMinutes>  
    <updateEveryNMillis>10000</updateEveryNMillis>
    • TROUBLE? लिनक्स कंप्यूटर पर, यदि आप उपयोग कर रहे हैं<EveryNMillis साथEDDGridFromFiles or EDDTableFromFiles कक्षाएं, आप एक समस्या देख सकते हैं जहां डेटासेट लोड करने में विफल रहता है (कभी-कभी या लगातार) त्रुटि संदेश के साथ: "IOException: इनोटिफाई उदाहरणों की उपयोगकर्ता सीमा तक पहुंच गई या बहुत सारी खुली फाइलें। कारण में एक बग हो सकता हैJavaजो उदाहरणों को संग्रहित नहीं होने का कारण बनता है। इस समस्या से बचना चाहिएERDDAP™v1.66 और उच्चतर। तो सबसे अच्छा समाधान का नवीनतम संस्करण स्विच करना हैERDDAP। यदि वह समस्या को हल नहीं करता है (यदि आपके पास वास्तव में बड़ी संख्या में डेटासेट हैं तो इसका उपयोग करना<अद्यतनEveryNMillis>, आप कॉल करके इस समस्या को ठीक कर सकते हैं:
      sudo sysctl fs.inotify.max\\_user\\_watches=65536  
      sudo sysctl fs.inotify.max\\_user\\_instances=1024
      sudo sysctl -p

या, यदि समस्या बनी रहती है तो उच्च संख्या का उपयोग करें। घड़ियों के लिए डिफ़ॉल्ट 8192 है। उदाहरणों के लिए डिफ़ॉल्ट 128 है।

  • आप डाल सकते हैं<अद्यतन MaxEvents>10</updateMaxEvents> मेंdatasets.xml (शीर्ष के पास अन्य सेटिंग्स के साथ) फ़ाइल परिवर्तनों की अधिकतम संख्या को बदलने के लिए (डिफ़ॉल्ट=10) इसे अद्यतन EveryNMillis प्रणाली द्वारा संसाधित किया जाएगा। डेटासेट के लिए बड़ी संख्या उपयोगी हो सकती है जहां यह बहुत महत्वपूर्ण है कि उन्हें हमेशा अद्यतन रखा जाए। देखेंअद्यतनMaxEvents प्रलेखन
  • गंभीर प्रोग्रामर के लिए - इन वृद्धिशील अद्यतनों के विपरीतERDDAPपूर्णReloadEveryNMinutesप्रणाली, उपयोगकर्ता अनुरोध धागे के भीतर होती है। इसलिए, किसी भी डेटासेट को एक साथ अद्यतन किया जा सकता है। वहाँ कोड है (लॉक) यह सुनिश्चित करने के लिए कि केवल एक धागा किसी भी समय किसी भी दिए गए डेटासेट के लिए अद्यतन पर काम कर रहा है। एकाधिक एक साथ अद्यतन की अनुमति आसान थी; एकाधिक एक साथ पूर्ण लोड की अनुमति कठिन होगी।  

<स्रोतCanConstrainStringEQNE>

  • [ ** <स्रोतCanConstrainStringEQNE> ** ] (#sourcecanconstrainstringeqne) EDDTable के भीतर एक OPTIONAL टैग है<Dataset> में टैगdatasets.xmlयह निर्दिष्ट करता है कि स्रोत = और != ऑपरेटरों के साथ स्ट्रिंग चर को बाधित कर सकता है।
    • EDDTableFromDapSequence के लिए, यह केवल बाहरी अनुक्रम स्ट्रिंग चर पर लागू होता है। यह माना जाता है कि स्रोत आंतरिक अनुक्रम चर पर किसी भी बाधा को संभाल नहीं सकता है।
    • यह टैग वैकल्पिक है। मान्य मान सही हैं (डिफ़ॉल्ट) और झूठी।
    • EDDTableFromDapSequence के लिएOPeNDAPDRDS सर्वर, यह सच करने के लिए सेट किया जाना चाहिए (डिफ़ॉल्ट) ।
    • EDDTableFromDapSequence के लिए डैपर सर्वर, यह झूठी करने के लिए सेट किया जाना चाहिए।
    • उदाहरण है:
        <sourceCanConstrainStringEQNE>true</sourceCanConstrainStringEQNE>  

 

<स्रोतCanConstrainStringGTLT>

  • [ ** <स्रोतCanConstrainStringGTLT> ** ] (#sourcecanconstrainstringgtlt) EDDTable के भीतर एक OPTIONAL टैग है<डेटासेट> टैग जो निर्दिष्ट करता है कि स्रोत स्ट्रिंग चर को नियंत्रित कर सकता है या नहीं।<,<=,>, और>= ऑपरेटर।
    • EDDTableFromDapSequence के लिए, यह केवल बाहरी अनुक्रम स्ट्रिंग चर पर लागू होता है। यह माना जाता है कि स्रोत आंतरिक अनुक्रम चर पर किसी भी बाधा को संभाल नहीं सकता है।
    • मान्य मान सही हैं (डिफ़ॉल्ट) और झूठी।
    • यह टैग वैकल्पिक है। डिफ़ॉल्ट सही है।
    • EDDTableFromDapSequence के लिएOPeNDAPDRDS सर्वर, यह सच करने के लिए सेट किया जाना चाहिए (डिफ़ॉल्ट) ।
    • EDDTableFromDapSequence के लिए डैपर सर्वर, यह झूठी करने के लिए सेट किया जाना चाहिए।
    • उदाहरण है:
        <sourceCanConstrainStringGTLT>true</sourceCanConstrainStringGTLT>  

 

<स्रोतCanConstrainStringRegex>

  • [ ** <स्रोतCanConstrainStringRegex> ** ] (#sourcecanconstrainstringregex) EDDTable के भीतर एक OPTIONAL टैग है<डेटासेट> टैग जो निर्दिष्ट करता है कि स्रोत नियमित अभिव्यक्तियों द्वारा स्ट्रिंग चर को नियंत्रित कर सकता है, और यदि ऐसा है तो ऑपरेटर क्या है।
    • वैध मान "=~" हैं (The number of theDAPमानक) , (गलती से कई द्वारा समर्थितDAPसर्वर) या "" (यह दर्शाता है कि स्रोत नियमित अभिव्यक्ति का समर्थन नहीं करता है) ।
    • यह टैग वैकल्पिक है। डिफ़ॉल्ट " है।
    • EDDTableFromDapSequence के लिएOPeNDAPDRDS सर्वर, इसे "" पर सेट किया जाना चाहिए (डिफ़ॉल्ट) ।
    • EDDTableFromDapSequence के लिए डैपर सर्वर, इसे "" पर सेट किया जाना चाहिए (डिफ़ॉल्ट) ।
    • उदाहरण है:
        <sourceCanConstrainStringRegex>=~</sourceCanConstrainStringRegex>  

<स्रोतCandoDistinct>

  • [ ** <स्रोतCandoDistinct> ** ] (#sourcecandodistinct) EDDTableFromDatabase के भीतर एक OPTIONAL टैग है<डेटासेट> टैग जो निर्दिष्ट करता है कि स्रोत डेटाबेस को संभालना चाहिए और निर्धारित करना चाहिए। () उपयोगकर्ता प्रश्नों में बाधाएं।
    • यह टैग वैकल्पिक है। मान्य मान नहीं हैं (ERDDAP™अलग-अलग संभालती है; डिफ़ॉल्ट) आंशिक (स्रोत अलग-अलग संभालता है औरERDDAP™इसे फिर से संभालती है) हाँ (स्रोत अलग संभालता है) ।
    • यदि आप उपयोग नहीं कर रहे हैं औरERDDAP™अलग होने पर स्मृति से बाहर चल रहा है, हाँ का उपयोग करें।
    • यदि आप हाँ का उपयोग कर रहे हैं और स्रोत डेटाबेस बहुत धीरे-धीरे अलग संभालती है, तो इसका उपयोग न करें।
    • आंशिक रूप से आपको दोनों में से सबसे बुरा लगता है: यह धीमा है क्योंकि विशिष्ट डेटाबेस का संचालन धीमा है और यह स्मृति से बाहर हो सकता है।ERDDAP।
    • डेटाबेस परिणामों की सिर्फ अनूठी पंक्तियों के अनुरोध के रूप में DISTINCT की व्याख्या करते हैं, जबकिERDDAP™इसे परिणामों की अनूठी पंक्तियों की एक क्रमबद्ध सूची के लिए अनुरोध के रूप में व्याख्या करता है। यदि आप इसे आंशिक या हाँ सेट करते हैं, तो आप इसे आंशिक या हाँ सेट कर सकते हैं।ERDDAP™स्वचालित रूप से डेटाबेस को परिणामों को सॉर्ट करने के लिए भी कहता है।
    • परिणामों में एक छोटा सा अंतर: नहीं|आंशिक,ERDDAP™परिणामों की शुरुआत में "" को सॉर्ट करेगा (गैर-"तार से पहले) । हाँ, डेटाबेस हो सकता है (पोस्टग्रेस होगा) परिणाम के अंत में "" टाइप करें (गैर-"तार के बाद) । मुझे लगता है कि यह भी छोटे शब्दों की छँटाई को प्रभावित करेगा जो लंबे शब्दों से शुरू होता है। उदाहरण के लिए,ERDDAP™"साइमन" को "साइमन" से पहले सॉर्ट करेगा।
    • उदाहरण है:
        <sourceCanDoDistinct>yes</sourceCanDoDistinct>  

 

<SourceCanorby>

  • [ ** <स्रोत CanOrder by ** ] (#sourcecanorderby) EDDTableFromDatabase के भीतर एक OPTIONAL टैग है<डेटासेट> टैग जो निर्दिष्ट करता है कि स्रोत डेटाबेस को संभालना चाहिए या नहींorderBy (......) उपयोगकर्ता प्रश्नों में बाधाएं।
    • यह टैग वैकल्पिक है। मान्य मान नहीं हैं (ERDDAP™हैंडलorderBy (......) डिफ़ॉल्ट) आंशिक (स्रोत हैंडलorderByऔरERDDAP™इसे फिर से संभालती है) हाँ (स्रोत हैंडलorderBy (......) ) ।
    • यदि आप उपयोग नहीं कर रहे हैं औरERDDAP™जब हैंडलिंग स्मृति से बाहर चल रहा हैorderBy (......) , हाँ उपयोग करें।
    • यदि आप हाँ का उपयोग कर रहे हैं और स्रोत डेटाबेस हैंडलorderBy (......) धीरे-धीरे उपयोग नहीं करते।
    • आंशिक रूप से आपको दोनों में से सबसे खराब देता है: यह धीमा है क्योंकि डेटाबेस की हैंडलिंगorderBy (......) यह धीमी है और यह स्मृति से बाहर हो सकता हैERDDAP।
    • परिणामों में एक छोटा सा अंतर: नहीं|आंशिक,ERDDAP™परिणामों की शुरुआत में "" को सॉर्ट करेगा (गैर-"तार से पहले) । हाँ, डेटाबेस हो सकता है (पोस्टग्रेस होगा) परिणाम के अंत में "" टाइप करें (गैर-"तार के बाद) । यह भी छोटे शब्दों के छँटाई को प्रभावित कर सकता है जो लंबे शब्दों से शुरू होता है। उदाहरण के लिए,ERDDAP™"साइमन" से पहले "साइमन" को सॉर्ट करेगा, लेकिन मुझे यकीन नहीं है कि कैसे एक डेटाबेस उन्हें सॉर्ट करेगा।
    • उदाहरण है:
        <sourceCanOrderBy>yes</sourceCanOrderBy>  

 

<SourceNeedsExpandedFP\_EQ>

  • [ ** <SourceNeedsExpandedFP \_EQ> ** ] (#sourceneedsexpandedfp_eq) EDDTable के भीतर एक OPTIONAL टैग है<डेटासेट> टैग जो निर्दिष्ट करता है (सच (डिफ़ॉल्ट) या झूठ) यदि स्रोत को प्रश्नों के साथ मदद की आवश्यकता है<संख्यात्मक चर>=<फ्लोटिंगपॉइंटवेल्यू> (और! =,>=,<=). उदाहरण के लिए,
    <sourceNeedsExpandedFP\\_EQ>false</sourceNeedsExpandedFP\\_EQ>
    • कुछ डेटा स्रोतों के लिए, =, !=,<=, या> = फ्लोटिंग पॉइंट नंबर के साथ वांछित के रूप में काम नहीं कर सकता है। उदाहरण के लिए, लम्बाई = 220.2 की खोज विफल हो सकती है यदि मान 220.200000001 के रूप में संग्रहीत है।
    • यह समस्या उत्पन्न होती है क्योंकि फ्लोटिंग पॉइंट नंबर होते हैंवास्तव में कंप्यूटर के भीतर प्रतिनिधित्व नहीं करता
    • यदि स्रोतNeedsExpandedFP\EQ सही करने के लिए सेट (डिफ़ॉल्ट) ,ERDDAP™इस समस्या से बचने के लिए डेटा स्रोत को भेजे गए प्रश्नों को संशोधित करता है। यह हमेशा सुरक्षित है और इस सेट को सच करने के लिए ठीक है।  

<sourceUrl& gt;

  • [ ** <sourceUrl> ** ] (#sourceurl) एक डेटासेट के वैश्विक भीतर एक आम टैग है<addAttributes> टैग जो यूआरएल को निर्दिष्ट करता है जो डेटा का स्रोत है।
    • उदाहरण है:
        <sourceUrl>https://oceanwatch.pfeg.noaa.gov/thredds/dodsC/satellite/VH/chla/1day</sourceUrl>  
    (लेकिन यह सब एक पंक्ति में डाल दिया)
    • मेंERDDAP™सभी डेटासेट में एक "" होगाsourceUrl"संयुक्त वैश्विक विशेषताओं में जो उपयोगकर्ताओं को दिखाया गया है।
    • अधिकांश डेटासेट प्रकारों के लिए, यह टैग आवश्यक है। यह पता लगाने के लिए डेटासेट प्रकार का विवरण देखें कि क्या यह आवश्यक है या नहीं।
    • कुछ डेटासेट के लिए, अलग<sourceUrl> टैग की अनुमति नहीं है। इसके बजाय, आपको "sourceUrl"वैश्विक विशेषताआम तौर पर वैश्विक \> मेंaddAttributes<। यदि कोई वास्तविक स्रोत URL नहीं है (उदाहरण के लिए, यदि डेटा स्थानीय फ़ाइलों में संग्रहीत किया जाता है) , इस विशेषता में अक्सर सिर्फ एक प्लेसहोल्डर मूल्य होता है, उदाहरण के लिए,<att name="name"> (स्थानीय फाइलें) </att>।
    • अधिकांश डेटासेट के लिए, यह URL का आधार है जिसका उपयोग डेटा का अनुरोध करने के लिए किया जाता है। उदाहरण के लिए,DAPसर्वर, यह URL है जिसके लिए .dods, .das, .dds, या HTML जोड़ा जा सकता है।
    • चूंकिdatasets.xmlएक XML फ़ाइल है, आप MUST भी '&' कोडित करते हैं, '<यूआरएल में '&', '<',' और '>'।
    • अधिकांश डेटासेट प्रकारों के लिए,ERDDAP™मूल कहते हैंsourceUrl (स्रोत कोड में "localSourceUrl") toवैश्विक गुण (जहां यह स्रोत कोड में "publicSourceUrl" बन जाता है) । जब डेटा स्रोत स्थानीय फाइलें होती हैं,ERDDAP™जोड़नाsourceUrl(a) (स्थानीय फाइलें) "वैश्विक विशेषताओं के लिए सुरक्षा सावधानी के रूप में। जब डेटा स्रोत डेटाबेस होता है,ERDDAP™जोड़नाsourceUrl(a) (स्रोत डेटाबेस) "वैश्विक विशेषताओं के लिए सुरक्षा सावधानी के रूप में। यदि आपके कुछ डेटासेट गैर-सार्वजनिक उपयोग करते हैंsourceUrl' (आमतौर पर क्योंकि उनका कंप्यूटर आपके DMZ या स्थानीय लैन पर होता है) आप उपयोग कर सकते हैं [<ConvertTopublicSourceUrl> (#converttopublicsourceurl) टैग निर्दिष्ट करने के लिए कैसे स्थानीय परिवर्तित करने के लिएsourceUrlजनता के लिएsourceUrlS.
    • AsourceUrlशुरू हो सकता हैhttp://,https://, ftp://, और शायद अन्य उपसर्ग.httpsयह सुनिश्चित करने के लिए कि स्रोत कौन है, वे कहते हैं कि वे हैं, यह सुनिश्चित करने के लिए स्रोत के डिजिटल प्रमाण पत्र को पढ़ने और जांचें। दुर्लभ मामलों में, यह जांच त्रुटि "javax.net.ssl.SSLProtocolException: handhake चेतावनी: unrecognized \_name" के साथ विफल हो सकता है। यह शायद प्रमाण पत्र पर डोमेन नाम के कारण होता है कि आप जिस डोमेन नाम का उपयोग कर रहे हैं उसे मेल नहीं खाता है। आप कर सकते हैं और विवरण पढ़ना चाहिएsourceUrlअपने वेब ब्राउज़र में प्रमाण पत्र, विशेष रूप से, "Subject वैकल्पिक नाम" अनुभाग में "डीएनएस नाम" की सूची।

कुछ मामलों में,sourceUrlआप उपयोग कर रहे हैं, प्रमाण पत्र पर डोमेन नाम का उपनाम हो सकता है। उदाहरण के लिए, https://podaac-opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/flk/ इस त्रुटि को फेंक देगा, लेकिन https://opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/flk/ , जो प्रमाण पत्र पर डोमेन नाम का उपयोग करता है, नहीं जीता। इन मामलों में समाधान इसलिए प्रमाण पत्र पर डोमेन नाम को ढूंढना और उसका उपयोग करना है। यदि आप इसे प्रमाण पत्र पर नहीं पा सकते हैं, तो डेटा प्रदाता से संपर्क करें।

अन्य मामलों में, प्रमाणपत्र पर डोमेन नाम नाम नामों के एक समूह के लिए हो सकता है। यदि ऐसा होता है या समस्या अन्यथा असंभव है, तो कृपया क्रिस को ईमेल करें। जॉन noaa.gov पर समस्या की रिपोर्ट करने के लिए।  

<addAttributes>

  • [ ** <addAttributes> ** ] (#addattributs) प्रत्येक डेटासेट के लिए और प्रत्येक परिवर्तनीय जो देता है के लिए एक OPTIONAL टैग हैERDDAPप्रशासक डेटासेट और इसके चर से जुड़े मेटाडाटा विशेषताओं को नियंत्रित करते हैं।
    • ERDDAP™डेटासेट के स्रोत से विशेषताओं को जोड़ती है ("sourceAttributes") और "addAttributesआप किस प्रकार परिभाषित करते हैंdatasets.xml (जो प्राथमिकता है) "combinedAttributes" बनाने के लिए, जो क्या हैंERDDAP™उपयोगकर्ता देखते हैं। इस प्रकार, आप उपयोग कर सकते हैंaddAttributesSourceAttributes के मूल्यों को फिर से परिभाषित करने के लिए, नई विशेषताओं को जोड़ें, या विशेषताओं को हटा दें।
    • The The most of the<addAttributes> टैग 0 या अधिक संलग्न ** <att> ** उप-टैग, जिसका उपयोग व्यक्तिगत विशेषताओं को निर्दिष्ट करने के लिए किया जाता है।
    • प्रत्येक विशेषता में एक नाम और एक मूल्य होता है (उदाहरण के लिए, जिसमें एक विशिष्ट डेटा प्रकार है, डबल) ।
    • किसी दिए गए नाम के साथ केवल एक ही विशेषता हो सकती है। यदि वहाँ अधिक हैं, तो अंतिम व्यक्ति की प्राथमिकता है।
    • मान एक एकल मान हो सकता है या मूल्यों की एक अंतरिक्ष पृथक सूची हो सकती है।
    • सिंटैक्स
      • आदेश<Att> भीतर subtagsaddAttributesमहत्वपूर्ण नहीं है।
      • The The most of the<att> subtag प्रारूप है
          <att name="*name*" \\[type="*type*"\\] >*value*</att>
      • सभी विशेषताओं का गंतव्य नाम एक अक्षर के साथ शुरू होता है (A-Z, a-z) और MUST में केवल अक्षर A-Z, A-Z, 0-9, या '\_' होते हैं।
      • यदि<Att> subtag का कोई मूल्य या null का मान नहीं है, जो विशेषता को संयुक्त विशेषताओं से हटा दिया जाएगा। उदाहरण के लिए,<att name="rows" /> संयुक्त विशेषताओं से पंक्तियों को हटा देगा। उदाहरण के लिए,<att name="coordinates"> शून्य</att> संयुक्त विशेषताओं से निर्देशांक को हटा देगा।
विशेषता प्रकार
  • [ऑप्शनल प्रकार का मूल्य]<att> subtags (#attributetype) मानों के लिए डेटा प्रकार को इंगित करता है। डिफ़ॉल्ट प्रकार स्ट्रिंग है। स्ट्रिंग विशेषता का एक उदाहरण है:
    <att name="creator\\_name">NASA/GSFC OBPG</att>
    • एकल मूल्यों के लिए मान्य प्रकार बाइट हैं (8-bit integer) छोटा (16-bit हस्ताक्षरित पूर्णांक) , int (32-bit हस्ताक्षरित पूर्णांक) लंबा (64-बिट हस्ताक्षरित पूर्णांक) तैरना (32-बिट फ्लोटिंग पॉइंट) , डबल (64-बिट फ्लोटिंग पॉइंट) , चार और स्ट्रिंग। उदाहरण के लिए,
      <att name="scale\\_factor" type="float">0.1</att>

इन नोटों को देखेंचार डेटा प्रकार। इन नोटों को देखेंलंबे डेटा प्रकार

  • मानों की अंतरिक्ष पृथक सूचियों के लिए मान्य प्रकार (या एकल मान) byteList, shortList, unsignedShortList, charList, intList, longList, फ्लोटलिस्ट, डबल सूची उदाहरण के लिए,
    <att name="actual\\_range" type="doubleList">10.34 23.91</att>  

एक unsignedShortList आपको असाइन किए गए शॉर्ट्स की सूची निर्दिष्ट करने देता है, लेकिन उन्हें संबंधित यूनिकोड वर्णों की सूची में परिवर्तित किया जाएगा (उदाहरण के लिए, "65 67 69" को "A C E" में परिवर्तित किया जाएगा। यदि आप एक charList निर्दिष्ट करते हैं, तो किसी विशेष वर्ण (जैसे, अंतरिक्ष, डबल उद्धरण, backslash) को एनकोड करें।<#32, या # 127) जैसा कि आप उन्हें एनसीसीएसवी फ़ाइल के डेटा अनुभाग में कोडित करेंगे (उदाहरण के लिए, "", "\\\\\", "\\\\\\", "\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n"\u20ac") । कोई स्ट्रिंगलिस्ट नहीं है। स्ट्रिंग मूल्यों को मल्टी-लाइन स्ट्रिंग के रूप में स्टोर करें। उदाहरण के लिए,

<att name="history">2011-08-05T08:55:02Z ATAM - made CF-1.6 compliant.  
2012-04-08T08:34:58Z ATAM - Changed 'height' from double to float.</att>

 

वैश्विक योगदान

  • [ ** वैश्विक गुण<addAttributes> ** ] (#Global-attributes) -- <addAttributes> भीतर एक OPTIONAL टैग है<डेटासेट> टैग जिसका उपयोग उन विशेषताओं को बदलने के लिए किया जाता है जो पूरे डेटासेट पर लागू होते हैं।

    • ** वैश्विक उपयोग<addAttributes> डेटासेट की वैश्विक विशेषताओं को बदलने के लिए। ** ERDDAP™डेटासेट के स्रोत से वैश्विक विशेषताओं को जोड़ती है ()** स्रोतAttributes ) और वैश्विक addAttributes जिसे आप परिभाषित करते हैंdatasets.xml (जो प्राथमिकता है) वैश्विक बनाने के लिए संयुक्त एथलीट ** क्या हैERDDAP™उपयोगकर्ता देखते हैं। इस प्रकार, आप उपयोग कर सकते हैंaddAttributesSourceAttributes के मूल्यों को फिर से परिभाषित करने के लिए, नई विशेषताओं को जोड़ें, या विशेषताओं को हटा दें।
    • [] ** <addAttributes> सूचना (#addattributs) जो वैश्विक और परिवर्तनीय पर लागू होता है <addAttributes> ** ।
    • FGDCऔरआईएसओ 19115-2/19139मेटाडाटा -- आम तौर पर,ERDDAP™स्वचालित रूप से ISO 19115-2 / 19139 और FGDC उत्पन्न करेगा (FGDC-STD-001-1998) डेटासेट के मेटाडाटा से जानकारी का उपयोग करके प्रत्येक डेटासेट के लिए XML मेटाडाटा फाइलें। तो, अच्छा डेटासेट मेटाडाटा अच्छा होता हैERDDAPISO 19115 और FGDC मेटाडाटा कृपया अपने डेटासेट के मेटाडाटा में सुधार करने में बहुत समय और प्रयास करने पर विचार करें (जो किसी भी तरह से करने के लिए एक अच्छी बात है) । अधिकांश डेटासेट मेटाडाटा गुण जो ISO 19115 और FGDC मेटाडाटा उत्पन्न करने के लिए उपयोग किए जाते हैं से हैंACDD मेटाडाटा मानकऔर इतने नीचे उल्लेखित हैं।
    • कई वैश्विक विशेषताओं में विशेष हैंERDDAP™उन्हें देखने के लिए और उन्हें विभिन्न तरीकों से उपयोग करते हैं। उदाहरण के लिए, करने के लिए एक लिंकinfoUrlडेटासेट की सूची और अन्य स्थानों के साथ वेब पृष्ठों पर शामिल है, ताकि उपयोगकर्ता डेटासेट के बारे में अधिक जानकारी प्राप्त कर सकें।
    • जब कोई उपयोगकर्ता डेटा की एक सबसेट का चयन करता है, तो वैश्लेषिकी के देशांतर, अक्षांश, ऊंचाई से संबंधित वैश्लेषिकी (या गहराई) समय सीमा (उदाहरण के लिए, दक्षिणी अधिकांश \_उत्तरी, उत्तरी अधिकांश \_उत्तरी, समय \_coverage \_start, समय \_coverage \_end) स्वचालित रूप से उत्पन्न या अद्यतन कर रहे हैं।
    • वैश्विक नमूना<addAttributes>
      <addAttributes> 
      <att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>
      <att name="infoUrl">https://coastwatch.pfeg.noaa.gov/infog/PH\\_ssta\\_las.html</att>
      <att name="institution">NOAA CoastWatch, West Coast Node</att>
      <att name="title">SST, Pathfinder Ver 5.0, Day and Night, Global</att>
      <att name="cwhdf\\_version" />
      </addAttributes>

खाली cwhdf \_version विशेषता स्रोत cwhdf \_version विशेषता का कारण बनता है (यदि कोई हो) अंतिम, विशेषताओं की संयुक्त सूची से हटाया जाना चाहिए।

  • इस जानकारी की आपूर्ति करने में मदद करता हैERDDAP™बेहतर काम करते हैं और उपयोगकर्ता डेटासेट को समझने में मदद करते हैं। अच्छा मेटाडाटा एक डाटासेट प्रयोग करने योग्य बनाता है। अपर्याप्त मेटाडाटा एक डेटासेट बेकार बनाता है। कृपया मेटाडाटा विशेषताओं के साथ अच्छा काम करने का समय लें।
विशेष वैश्विक विशेषताएँERDDAP™
स्वीकृति
  • स्वीकृति और acknowledgment (सेएसीडीमेटाडाटा मानक) समूह या समूहों को स्वीकार करने का एक तरीका है जो समर्थन प्रदान करता है (विशेष रूप से, वित्तीय) परियोजना के लिए जिसने इस डेटा को बनाया। उदाहरण के लिए,
    <att name="acknowledgment">AVISO</att>

ध्यान दें कि ACDD 1.0 और 1.1 ने वर्तनी "अवशोषित" का उपयोग किया (जो अमेरिका में सामान्य वर्तनी है।) , लेकिन ACDD 1.3 ने इसे "अवज्ञा" में बदल दिया। (जो यू.के. में सामान्य वर्तनी है।) । मेरी समझ यह है कि बदलाव अनिवार्य रूप से एक दुर्घटना थी और उन्होंने निश्चित रूप से बदलाव के सुधार को नहीं पहचाना था। क्या है? अब दुनिया भर में लाखों डेटा फाइलें हैं जिनके पास "अनोवेलेजमेंट" और लाखों लोग हैं जिनके पास "अनोवेलेजमेंट" है। यह एक मानक में "सरल" परिवर्तन के फोल को उजागर करता है, और मानकों में स्थिरता की आवश्यकता पर जोर देता है। क्योंकि ACDD 1.3 (जो ACDD का संस्करण हैERDDAP™समर्थन) कहते हैं कि "Anoledgement" क्या है?ERDDAP™ (विशेष रूप से जेनरेटडाटासेट एक्सएमएल) प्रोत्साहित करना।  

cdm \_altitude \_proxy
  • cdm \_altitude \_proxy केवल EDDTable डेटासेट के लिए है जिसमें ऊंचाई या गहराई परिवर्तनीय नहीं है लेकिन इसमें एक चर है जो ऊंचाई या गहराई के लिए प्रॉक्सी है। (उदाहरण के लिए, दबाव, सिग्मा, बोतल संख्या) , आप उस परिवर्तनीय की पहचान करने के लिए इस विशेषता का उपयोग कर सकते हैं। उदाहरण के लिए,
    <att name="cdm\\_altitude\\_proxy">pressure</att>  

यदिcdm \_data \_typeप्रोफाइल या ट्रेजेक्टरीप्रोफाइल है और इसमें कोई ऊंचाई या गहराई परिवर्तनीय नहीं है, cdm \_altitude \_proxy MUST को परिभाषित किया गया है। यदि cdm \_altitude \_proxy परिभाषित किया गया है,ERDDAP™निम्नलिखित मेटाडाटा को चर में जोड़ देगा: \_Coordinate एक्सिस टाइप = हेट और अक्ष = जेड।  

cdm \_data \_type

सीडीएम अभी भी विकसित हो रहा है और फिर से बदल सकता है।ERDDAP™संबंधित और अधिक विस्तृत अनुपालनDiscrete Sampling Geometries (DSG) अध्यायसीएफ 1.6मेटाडाटा सम्मेलन (पहले CF प्वाइंट अवलोकन सम्मेलन बुलाया) ।

  • या तो डेटासेट वैश्विकस्रोतAttributesवैश्विक<addAttributes> MUST में cdm \_data \_type विशेषता शामिल है। कुछ डेटासेट प्रकार (EDDTable ओबी) इसे स्वचालित रूप से सेट करेगा।
  • के लिएEDDGridडेटासेट, cdm \_data \_type विकल्प ग्रिड हैं (डिफ़ॉल्ट और अब तक के लिए सबसे आम प्रकारEDDGridडेटासेट) , मूविंगग्रिड, अन्य, प्वाइंट, प्रोफाइल, रेडियल स्वीप, टाइमसीरीज, टाइमसीरीजप्रोफाइल, स्वाथ, ट्रेजेक्टरी, और ट्रेजेक्टरीप्रोफाइल। वर्तमान में,EDDGridकिसी भी संबंधित मेटाडाटा को निर्दिष्ट करने की आवश्यकता नहीं है, न ही यह जांचता है कि डेटा cdm \_data \_type से मेल खाता है। यह शायद निकट भविष्य में बदल जाएगा।
  • EDDTable एक कठोर तरीके से cdm \_data \_type का उपयोग करता है, CDM के बजाय CF के DSG विनिर्देशन का पालन करता है, जो कुछ कारणों से DSG के अनुरूप होने के लिए अद्यतन नहीं किया गया है। यदि डेटासेट का मेटाडाटा अनुपालन नहीं करता हैERDDAP's cdm \_data \_type' आवश्यकताओं (नीचे देखें) डेटासेट लोड करने में विफल हो जाएगा और एक उत्पन्न करेगात्रुटि संदेश। (यह एक अच्छी बात है, इस अर्थ में कि त्रुटि संदेश आपको बता देगा कि क्या गलत है ताकि आप इसे ठीक कर सकें।) अगर डेटासेट का डेटा डेटासेट के मेटाडाटा सेटअप से मेल नहीं खाता है (उदाहरण के लिए, यदि किसी व्यक्ति के डेटासेट में दिए गए स्टेशन के लिए एक से अधिक अक्षांश मान है) डेटा के लिए कुछ अनुरोध प्रतिक्रिया में गलत डेटा वापस आ जाएंगे। इसलिए सुनिश्चित करें कि आपको यह सब सही है।

इन सभी डेटासेटों के लिए, सम्मेलनों में औरMetadata\_Conventionsवैश्विक गुण, कृपया CF-1.6 देखें (नहीं CF-1.0, 1.1, 1.2, 1.3, 1.4, या 1.5) , CF-1.6 के बाद से डिस्क्रेटे सैम्पलिंग ज्यामिति से संबंधित परिवर्तनों को शामिल करने वाला पहला संस्करण है (DSG) सम्मेलन।

  • ERDDAP™CF DSG के लिए कोई सरल संबंध नहीं है
  • ERDDAP™एक स्रोत डेटासेट से एक मान्य DSG डेटासेट बना सकता है जो पहले से ही एक वैध DSG फ़ाइल है (s) एक स्रोत डेटासेट से बाहर, जो DSG के लिए सेट नहीं है लेकिन मेटाडाटा में बदलाव के माध्यम से बनाया जा सकता है। (जिनमें से कुछ हैंERDDAPडीएसजी सेटअप को निर्दिष्ट करने के लिए अधिक सामान्य दृष्टिकोण प्रदान करने के लिए विशिष्ट) ।
  • ERDDAP™जब यह डेटासेट लोड करता है तो कई वैधता परीक्षण करता है। यदि डेटासेट में cdm \_data\_type है (याfeatureType) विशेषता सफलतापूर्वक लोडERDDAP™फिरERDDAP™यह कह रहा है कि डेटासेट DSG आवश्यकताओं को पूरा करता है (अन्यथा,ERDDAP™यह पहली समस्या है कि यह पाया समझा एक अपवाद फेंक देंगे) । चेतावनी: एक सफलतापूर्वक लोड डेटासेट DSG आवश्यकताओं को पूरा करने के लिए प्रकट होता है (इसमें विशेषताओं का सही संयोजन है) लेकिन अभी भी गलत तरीके से स्थापित किया जा सकता है, जिससे गलत परिणाम हो सकते हैं.ncCF और CF.ncCFMA प्रतिक्रिया फ़ाइलों। (सॉफ्टवेयर कुछ मायनों में स्मार्ट है और दूसरों में clueless है।)
  • जब आप डेटासेट के मेटाडाटा को देखते हैंERDDAP™, DSG डेटासेट में दिखाई देता हैERDDAPआंतरिक स्वरूप (एक विशाल, डेटाबेस की तरह तालिका) । यह DSG प्रारूपों में से एक में नहीं है (उदाहरण के लिए, आयाम और मेटाडाटा सही नहीं है) लेकिन डेटासेट को DSG डेटासेट के रूप में इलाज के लिए आवश्यक जानकारी मेटाडाटा में है (उदाहरण के लिए, cdm \_data \_type = TimeSeries और cdm \_timeseries \_variables= ACsvListOfStationRelatedVarables वैश्विक मेटाडाटा और cf \_role = timeseries \_id में कुछ चर के लिए) ।
  • यदि कोई उपयोगकर्ता डेटासेट की एक सबसेट का अनुरोध करता है.ncCF (एक.ncDSG की Contiguous Ragged Array फ़ाइल प्रारूप में फ़ाइल) या.ncCFMA फ़ाइल (a.ncDSG की बहुआयामी सरणी फ़ाइल प्रारूप में फ़ाइल) यह फ़ाइल एक वैध CF DSG फ़ाइल होगी। हालांकि, अगर डेटासेट को गलत तरीके से स्थापित किया गया था (इसलिए कि मेटाडाटा द्वारा किए गए वादे सच नहीं हैं) फिर जवाब फ़ाइल तकनीकी रूप से मान्य होगी लेकिन कुछ तरीके से गलत होगा।  
EDDTable cdm_data_types
  • EDDTable डेटासेट के लिए, cdm \_data \_type विकल्प (और संबंधित आवश्यकताओं मेंERDDAP) हैं
अंक
  • अंक-- असंबंधित समय और स्थानों पर किए गए मापों के एक सेट के लिए है।
    • अन्य के अलावा अन्य सभी cdm \_data \_types के साथ, पॉइंट डेटासेट्स MUST में देशांतर, अक्षांश और समय चर है।
प्रोफ़ाइल
  • प्रोफ़ाइल- सभी एक समय में लिया माप का एक सेट है, एक अक्षांश देशांतर स्थान पर, लेकिन एक से अधिक गहराई पर (या ऊंचाई) । डेटासेट इन प्रोफाइल का एक संग्रह हो सकता है, उदाहरण के लिए, विभिन्न स्थानों से 7 प्रोफाइल। यह cdm \_data \_type किसी भी प्रोफाइल के बीच कोई तार्किक संबंध नहीं है।

  • चर में से एक (उदाहरण के लिए, प्रोफाइल \number) MUST में चर विशेषता cf \_role=profile \_id है जो वेरिएबल की पहचान करने के लिए विशिष्ट रूप से प्रोफाइल की पहचान करता है।

    <att name="cf\\_role">profile\\_id</att>  

यदि कोई अन्य चर उपयुक्त नहीं है, तो समय चर का उपयोग करने पर विचार करें।

cdm \_profile \_variables
  • डेटासेट MUST में वैश्विक योगदान शामिल हैcdm \_profile \_variablesजहां मूल्य उन चरों की एक अल्पसंख्यक सूची है जिनमें प्रत्येक प्रोफ़ाइल के बारे में जानकारी है। किसी दिए गए प्रोफाइल के लिए, इन चरों के मूल्यों को स्थिर किया जाना चाहिए। उदाहरण के लिए,
    <att name="cdm\\_profile\\_variables">profile\\_number,time,latitude,longitude</att>

MUST सूची में Cf \_role = प्रोफाइल \_id चर और प्रोफ़ाइल, और समय, अक्षांश और देशांतर के बारे में जानकारी के साथ अन्य सभी चर शामिल हैं। सूची में कभी ऊंचाई, गहराई या किसी भी अवलोकन चर शामिल नहीं होंगे।  

\[राय: cdm \_data \_type = प्रोफाइल शायद ही कभी इस्तेमाल किया जाना चाहिए। व्यवहार में, एक दिए गए डेटासेट आमतौर पर वास्तव में एक टाइमसीरीजप्रोफाइल है (एक निश्चित स्थिति में प्रोफाइल) या एक TrajectoryProfile (एक trajectory के साथ प्रोफाइल) इसलिए इसे ठीक से पहचाना जाना चाहिए।\]

समयसीमा
  • समयसीमा-- माप का एक अनुक्रम है (उदाहरण के लिए, समुद्री जल तापमान) एक पर लिया, तय, अक्षांश, देशांतर, गहराई (या ऊंचाई) स्थान (इसे "स्टेशन" कहते हैं।) डेटासेट इन टाइम सीरीज़ का एक संग्रह हो सकता है, उदाहरण के लिए, प्रत्येक 3 अलग-अलग स्थानों से एक अनुक्रम।
    • चर में से एक (उदाहरण के लिए, स्टेशन_id) MUST में परिवर्तनीय विशेषता cf \_role = timeseries \_id है ताकि वेरिएबल की पहचान की जा सके जो विशिष्ट रूप से स्टेशनों की पहचान करती है।
      <att name="cf\\_role">timeseries\\_id</att>
cdm \_timeseries \_variables
  • डेटासेट MUST में वैश्विक योगदान शामिल हैcdm \_timeseries \_variablesजहां मूल्य प्रत्येक स्टेशन के बारे में जानकारी रखने वाले चर की अल्पविराम-अलग सूची है। किसी दिए गए स्टेशन के लिए, इन चरों के मूल्य MUST स्थिर हो सकते हैं। उदाहरण के लिए,
    <att name="cdm\\_timeseries\\_variables">station\\_id,station\\_type,latitude,longitude</att>

MUST सूची में Cf \_role = timeseries \_id चर और स्टेशन के बारे में जानकारी के साथ अन्य सभी चर शामिल हैं, जिसमें लगभग हमेशा अक्षांश और देशांतर शामिल होता है। (और ऊंचाई या गहराई) । सूची में कभी भी समय या किसी भी अवलोकन चर शामिल नहीं होंगे।

  • कुछ moored buoys के लिए, एक डेटासेट में अक्षांश और देशांतर चर के दो सेट हो सकते हैं:
    1. अक्षांश और देशांतर मानों की एक जोड़ी जो स्थिर हैं (यानी, मूरिंग का निश्चित स्थान) । मेंERDDAP™इन चरों को देनाdestinationNameअक्षांश और देशांतर के s, और cdm \_timeseries \_variables की सूची में इन चरों को शामिल करते हैं।
    2. प्रत्येक अवलोकन के साथ जुड़े सटीक अक्षांश और देशांतर मान। मेंERDDAP™इन चरों को अलग-अलग देनाdestinationNames (उदाहरण के लिए, सटीकलाट और सटीक लोन) और इन चरों को सीडीएम \_timeseries \_variables की सूची में शामिल नहीं है। इसके लिए तर्क है: एक सैद्धांतिक परिप्रेक्ष्य से, एक DSG TimeSeries डेटासेट, अक्षांश और देशांतर के लिए (और ऊंचाई या गहराई) स्टेशन का स्थान MUST स्थिर है।
TimeSeriesProfile
  • TimeSeriesProfile-- एक, निश्चित, अक्षांश देशांतर स्थान पर लिए गए प्रोफाइल के अनुक्रम के लिए है। प्रत्येक प्रोफ़ाइल कई ऊंचाई या गहराई पर लिया माप का एक सेट है। डेटासेट इन टाइमसीरीजप्रोफाइल्स का एक संग्रह हो सकता है, उदाहरण के लिए, प्रत्येक 12 विभिन्न स्थानों पर लिए गए प्रोफाइल का अनुक्रम।
    • चर में से एक (उदाहरण के लिए, स्टेशन_id) MUST में परिवर्तनीय विशेषता cf \_role = timeseries \_id है ताकि वेरिएबल की पहचान की जा सके जो विशिष्ट रूप से स्टेशनों की पहचान करती है।
        <att name="cf\\_role">timeseries\\_id</att>
    • चर में से एक (उदाहरण के लिए, प्रोफाइल \number) MUST में चर विशेषता cf \_role=profile \_id है जो वेरिएबल की पहचान करने के लिए विशिष्ट रूप से प्रोफाइल की पहचान करता है।
      <att name="cf\\_role">profile\\_id</att>  
      (एक दिए गए प्रोफाइल \_id को केवल एक दिए गए टाइमरीज़ \_id के लिए अद्वितीय होना चाहिए।) यदि कोई अन्य चर उपयुक्त नहीं है, तो समय चर का उपयोग करने पर विचार करें।
    • Dataset MUST में वैश्विकAttribute cdm\_timeseries\_variables शामिल हैं, जहां मान प्रत्येक स्टेशन के बारे में जानकारी रखने वाले वेरिएबल्स की अल्पसंख्यक सूची है। किसी दिए गए स्टेशन के लिए, इन चरों के मूल्य MUST स्थिर हो सकते हैं। उदाहरण के लिए,
      <att name="cdm\\_timeseries\\_variables">station\\_id,station\\_type,latitude,longitude</att>

MUST सूची में Cf \_role = timeseries \_id चर और स्टेशन के बारे में जानकारी के साथ अन्य सभी चर शामिल हैं, जिसमें लगभग हमेशा अक्षांश और देशांतर शामिल होता है। सूची में कभी समय, ऊंचाई, गहराई या किसी भी अवलोकन चर शामिल नहीं होंगे।

  • Dataset MUST में वैश्विकAttribute cdm \_profile \_variables शामिल हैं, जहां मूल्य उन चरों की एक Coma-separated सूची है जिनकी प्रत्येक प्रोफ़ाइल के बारे में जानकारी है। किसी दिए गए प्रोफाइल के लिए, इन चरों के मूल्यों को स्थिर किया जाना चाहिए। उदाहरण के लिए,
    <att name="cdm\\_profile\\_variables">profile\\_number,time</att>

MUST सूची में Cf \_role = प्रोफाइल \_id चर और प्रोफ़ाइल के बारे में जानकारी के साथ अन्य सभी चर शामिल हैं, जिसमें लगभग हमेशा समय शामिल होता है। सूची में कभी अक्षांश, देशांतर, ऊंचाई, गहराई या किसी भी अवलोकन चर शामिल नहीं होंगे।

बेदखलदार
  • बेदखलदार- एक trajectory के साथ लिया माप का एक अनुक्रम है (अंतरिक्ष और समय के माध्यम से एक पथ) (उदाहरण के लिए, समुद्र \_water \_ताप एक जहाज द्वारा लिया क्योंकि यह पानी के माध्यम से चलता है) । डेटासेट इन ट्रेजेक्टरियों का एक संग्रह हो सकता है, उदाहरण के लिए, प्रत्येक 4 अलग जहाजों से एक अनुक्रम।
    • चर में से एक (उदाहरण के लिए, जहाज \_id) MUST विशेषता cf \_role = trajectory \_id है कि अद्वितीय trajectories की पहचान करने के लिए।
      <att name="cf\\_role">trajectory\\_id</att>
cdm \_trajectory \_variables
  • डेटासेट MUST में वैश्विक योगदान शामिल हैcdm \_trajectory \_variablesजहां मूल्य उन चरों की एक अल्पसंख्यक सूची है जिनके पास प्रत्येक ट्रेजेक्टरी के बारे में जानकारी है। किसी दिए गए प्रक्षेपवक्र के लिए, इन चरों के मूल्यों को स्थिर किया जाना चाहिए। उदाहरण के लिए,
    <att name="cdm\\_trajectory\\_variables">ship\\_id,ship\\_type,ship\\_owner</att>

MUST सूची में Cf \_role = trajectory \_id चर और अन्य सभी चर शामिल हैं, जिनमें ट्रेजेक्टरी के बारे में जानकारी है। सूची में कभी समय, अक्षांश, देशांतर, या किसी भी अवलोकन चर शामिल नहीं होंगे।

ट्रेजेक्टरीप्रोफाइल
  • ट्रेजेक्टरीप्रोफाइल-- एक प्रक्षेपवक्र के साथ ली गई प्रोफाइल का एक अनुक्रम है। डेटासेट इन ट्रेजेक्टरीप्रोफाइल्स का एक संग्रह हो सकता है, उदाहरण के लिए, 14 विभिन्न जहाजों द्वारा लिए गए प्रोफाइल का एक अनुक्रम।
    • चर में से एक (उदाहरण के लिए, जहाज \_id) MUST में परिवर्तनीय विशेषता cf \_role = trajectory \_id है जो कि वेरिएबल की पहचान करता है जो विशिष्ट रूप से ट्रेजेक्टरी की पहचान करता है।
      <att name="cf\\_role">trajectory\\_id</att>
    • चर में से एक (उदाहरण के लिए, प्रोफाइल \number) MUST में चर विशेषता cf \_role=profile \_id है जो वेरिएबल की पहचान करने के लिए विशिष्ट रूप से प्रोफाइल की पहचान करता है।
      <att name="cf\\_role">profile\\_id</att>  
      (एक दिए गए प्रोफाइल \_id को केवल एक दिए गए ट्रेजेक्टरी \_id के लिए अद्वितीय होना चाहिए।) यदि कोई अन्य चर उपयुक्त नहीं है, तो समय चर का उपयोग करने पर विचार करें।
    • Dataset MUST में वैश्विकAttribute cdm\_trajectory\_variables शामिल हैं, जहां मूल्य उन चरों की एक अल्पसंख्यक सूची है जिनके पास प्रत्येक trajectory के बारे में जानकारी है। किसी दिए गए प्रक्षेपवक्र के लिए, इन चरों के मूल्यों को स्थिर किया जाना चाहिए। उदाहरण के लिए,
      <att name="cdm\\_trajectory\\_variables">ship\\_id,ship\\_type,ship\\_owner</att>

MUST सूची में Cf \_role = trajectory \_id चर और अन्य सभी चर शामिल हैं, जिनमें ट्रेजेक्टरी के बारे में जानकारी है। सूची में कभी प्रोफ़ाइल से संबंधित चर, समय, अक्षांश, देशांतर, या किसी भी अवलोकन चर शामिल नहीं होंगे।

  • Dataset MUST में वैश्विकAttribute cdm \_profile \_variables शामिल हैं, जहां मूल्य उन चरों की एक Coma-separated सूची है जिनकी प्रत्येक प्रोफ़ाइल के बारे में जानकारी है। किसी दिए गए प्रोफाइल के लिए, इन चरों के मूल्यों को स्थिर किया जाना चाहिए। उदाहरण के लिए,
    <att name="cdm\\_profile\\_variables">profile\\_number,time,latitude,longitude</att>

MUST सूची में Cf \_role = प्रोफाइल \_id चर और प्रोफ़ाइल के बारे में जानकारी के साथ अन्य सभी चर शामिल हैं, जिसमें लगभग हमेशा समय, अक्षांश और देशांतर शामिल हैं। सूची में कभी ऊंचाई, गहराई या किसी भी अवलोकन चर शामिल नहीं होंगे।

अन्य
  • अन्य-- कोई आवश्यकता नहीं है। इसका उपयोग अगर डेटासेट दूसरे विकल्पों में से एक फिट नहीं है, खासकर अगर डेटासेट में अक्षांश, देशांतर और समय चर शामिल नहीं है।  
  • सभी EDDTable डेटासेट एक cdm \_data\_type के साथ "अन्य" MUST के अलावा देशांतर, अक्षांश और समय चर है।
  • प्रोफाइल के साथ डेटासेट MUST में एक ऊंचाई परिवर्तनीय, एक गहराई परिवर्तनीय या एक हैcdm \_altitude \_proxyचर।
  • यदि आप डेटासेट नहीं बना सकते हैं तो आदर्श cdm \_data \_type के लिए सभी आवश्यकताओं का पालन करें, "Point" का उपयोग करें। (जिसमें कुछ आवश्यकताएं हैं) या "अन्य" (जिसकी कोई आवश्यकता नहीं है) इसके बजाय।
  • इस जानकारी का उपयोग करके किया जाता हैERDDAP™विभिन्न तरीकों से, उदाहरण के लिए, लेकिन ज्यादातर बनाने के लिए.ncCF फ़ाइलें (.ncफाइलें जो डेटासेट के सीडीएम \_data\_type से जुड़े Contiguous Ragged Array प्रतिनिधित्व का अनुपालन करती हैं) और.ncCFMA फ़ाइलें (.ncफ़ाइल जो डेटासेट के सीडीएम \_data\_type से जुड़े बहुआयामी ऐरे प्रतिनिधित्व का अनुपालन करती है) में परिभाषितDiscrete Sampling Geometries (DSG) अध्यायCFमेटाडाटा सम्मेलन, जिसे पहले "सीएफ प्वाइंट अवलोकन सम्मेलन" नाम दिया गया था।
  • Hint: इन डेटासेट के लिए सही सेटिंगsubsetVariablesआमतौर पर cdm \__variables विशेषताओं में सूचीबद्ध सभी चरों का संयोजन होता है। उदाहरण के लिए, TimeSeriesProfile के लिए, cdm \_timeseries \_variables प्लस cdm \_profile \_variables का उपयोग करें।
contributor\_name
  • contributor\_name (सेएसीडीमेटाडाटा मानक) एक व्यक्ति, संगठन या परियोजना की पहचान करने का तरीका है जो इस डेटासेट में योगदान देता है (उदाहरण के लिए, डेटा के मूल निर्माता, इससे पहले कि इसे इस डेटासेट के निर्माता द्वारा फिर से संसाधित किया गया था) । उदाहरण के लिए,
        <att name="contributor\\_name">NOAA OceanWatch - Central Pacific</att>  

यदि "contributor" वास्तव में डेटासेट पर लागू नहीं होता है, तो इस विशेषता को छोड़ दें। तुलना मेंcreator\_nameयह कभी-कभी फंडिंग स्रोत पर केंद्रित होता है।

contributor\_role
  • contributor\_role (सेएसीडीमेटाडाटा मानक) की भूमिका की पहचान करने का तरीका हैcontributor\_name। उदाहरण के लिए,
        <att name="contributor\\_role">Source of Level 2b data</att>  

यदि "contributor" वास्तव में डेटासेट पर लागू नहीं होता है, तो इस विशेषता को छोड़ दें।

सम्मेलन
  • सम्मेलन (सेCFमेटाडाटा मानक) पूरी तरह से अनुशंसा की जाती है। (यह भविष्य में आवश्यक हो सकता है।) मान मेटाडाटा मानकों की एक अल्पविराम-अलग सूची है जो इस डेटासेट का अनुसरण करती है। उदाहरण के लिए:
    <att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>  

आम मेटाडाटा सम्मेलनों में इस्तेमाल कियाERDDAP™हैं:

  • COARDSसम्मेलनCF के पूर्ववर्ती है।
  • जलवायु और पूर्वानुमान (CF) सम्मेलनमें कई अनुशंसित और आवश्यक विशेषताओं का स्रोत हैERDDAP। CF का वर्तमान संस्करण "CF-1.6" के रूप में पहचाना जाता है।
  • The The most of theNetCDFडेटासेट डिस्कवरी के लिए योगदान सम्मेलन (एसीडी) में कई अनुशंसित और आवश्यक विशेषताओं का स्रोत हैERDDAP। ACDD का मूल 1.0 संस्करण (एथेन डेविस द्वारा काम का एक शानदार टुकड़ा) , के रूप में पहचाना गया थाUnidataDataset डिस्कवरी v1.0वर्तमान (2015 में शुरू) ACDD का 1.3 संस्करण पहचाना जाता हैACDD-1.3। यदि आपके डेटासेट का उपयोग किया गया हैUnidataडेटासेट डिस्कवरी v1.0, हम आपको प्रोत्साहित करते हैंACDD-1.3 का उपयोग करने के लिए अपने डेटासेट को स्विच करें

यदि आपका डेटासेट कुछ अतिरिक्त मेटाडाटा मानक का अनुसरण करता है, तो कृपया कन्वेंशन्स विशेषता में CSV सूची में नाम जोड़ें।

coverage\_content\_type
  • coverage\_content\_type (सेआईएसओ 19115मेटाडाटा मानक) ग्रिड डेटा के प्रकार की पहचान करने का तरीका है (मेंEDDGridडेटासेट) । उदाहरण के लिए,
    <att name="coverage\\_content\\_type">modelResult</att>  

एकमात्र अनुमत मान सहायक हैंसूचना, छवि, मॉडलविनियमन, भौतिक मापन (डिफ़ॉल्ट जब ISO 19115 मेटाडाटा उत्पन्न होता है) , गुणवत्तासूचना, संदर्भ सूचना और विषयगत वर्गीकरण। (EDDTable Datasets के लिए इस टैग का उपयोग न करें।)

creator\_name
  • creator\_name (सेएसीडीमेटाडाटा मानक) व्यक्ति, संगठन या परियोजना की पहचान करने का तरीका है (यदि कोई विशिष्ट व्यक्ति या संगठन नहीं है) निर्माण के लिए जिम्मेदार (या हाल के पुन: प्रसंस्करण) इस डेटा का। उदाहरण के लिए,
    <att name="creator\\_name">NOAA NMFS SWFSC ERD</att>  

यदि डेटा को बड़े पैमाने पर पुन: संसाधित किया गया था (उदाहरण के लिए, स्तर 2 से स्तर 3 या 4 से उपग्रह डेटा) , फिर आमतौर पर पुन: प्रसंस्करणकर्ता को निर्माता के रूप में सूचीबद्ध किया जाता है और मूल निर्माता को इसके माध्यम से सूचीबद्ध किया जाता हैcontributor\_name। तुलना मेंपरियोजना, यह अधिक लचीला है, क्योंकि यह किसी व्यक्ति, एक संगठन या एक परियोजना की पहचान कर सकता है।

creator\_email
  • creator\_email (सेएसीडीमेटाडाटा मानक) एक ईमेल पते की पहचान करने का तरीका है (सही ढंग से स्वरूपित) यह निर्माता से संपर्क करने का एक तरीका प्रदान करता है। उदाहरण के लिए,
    <att name="creator\\_email">erd.data@noaa.gov</att>  
creator\_url
  • creator\_url (सेएसीडीमेटाडाटा मानक) उस संगठन के लिए एक यूआरएल की पहचान करने का तरीका है जिसने डेटासेट बनाया, या इस डेटासेट के बारे में निर्माता की जानकारी के साथ एक यूआरएल (लेकिन इसका उद्देश्य अधिक हैinfoUrl) । उदाहरण के लिए,
    <att name="creator\\_url">https://www.pfeg.noaa.gov</att>  
date\_created
  • date\_created (सेएसीडीमेटाडाटा मानक) उस तारीख की पहचान करने का तरीका है जिस पर डेटा पहले बनाया गया था (उदाहरण के लिए, इस रूप में संसाधित) , ISO 8601 प्रारूप में। उदाहरण के लिए,
    <att name="date\\_created">2010-01-30</att>  

यदि डेटा को समय-समय पर डेटासेट में जोड़ा जाता है, तो यह पहली तारीख है कि मूल डेटा उपलब्ध कराया गया था।

date\_modified
  • date\_modified (सेएसीडीमेटाडाटा मानक) उस तारीख की पहचान करने का तरीका है जिस पर डेटा को अंतिम रूप दिया गया था (उदाहरण के लिए, जब कोई त्रुटि तय की गई थी या जब नवीनतम डेटा जोड़ा गया था) , ISO 8601 प्रारूप में। उदाहरण के लिए,
    <att name="date\\_modified">2012-03-15</att>  
date\_issued
  • date\_issued (सेएसीडीमेटाडाटा मानक) जिस तारीख पर डेटा पहले दूसरों के लिए उपलब्ध कराया गया था, ISO 8601 प्रारूप में, उदाहरण के लिए, 2012-03-15. उदाहरण के लिए,
    <att name="date\\_issued">2010-07-30</att>  

उदाहरण के लिए, डेटासेट में एक हो सकता हैdate\_created2010-01-30 की, लेकिन केवल सार्वजनिक रूप से 2010-07-30 उपलब्ध कराया गया था।date\_issuedआम तौर पर प्रयोग किया जाता हैdate\_createdऔरdate\_modified। अगरdate\_issuedइसे छोड़कर सामग्री पर बढ़ने के लिएdate\_created।

वैश्विकdrawLandMask
  • drawLandMask -- यह एक वैकल्पिक वैश्विक विशेषता है जिसका उपयोग करके किया जाता हैERDDAP™ (कोई मेटाडाटा मानकों) जो डेटासेट के मेक ए ग्राफ फॉर्म पर "ड्रॉ लैंड मास्क" विकल्प के लिए डिफ़ॉल्ट मान निर्दिष्ट करता है ( datasetID ग्राफ़) और एक URL में &.land पैरामीटर के लिए डेटा के नक्शे का अनुरोध करता है। उदाहरण के लिए,
    <att name="drawLandMask">over</att>  

देखेंdrawLandMaskअवलोकन

featureType
  • featureType (सेCFमेटाडाटा मानक) IGNORED और / या REPLACED है। यदि डेटासेट हैcdm \_data \_typeउपयुक्त है,ERDDAP™इसे बनाने के लिए स्वचालित रूप से उपयोग किया जाएगाfeatureTypeविशेषता। इसलिए इसे जोड़ने की कोई आवश्यकता नहीं है।

हालांकि, अगर आप उपयोग कर रहे हैंEDDTableFromNcCFFilesफ़ाइलों से डेटासेट बनाने के लिए जो फाइलों का अनुसरण करते हैंCF Discrete Sampling Geometries (DSG) मानक, फ़ाइलों को स्वयं होना चाहिएfeatureTypeसही ढंग से परिभाषित, ताकिERDDAP™फाइलों को सही ढंग से पढ़ सकते हैं। यह उस प्रकार की फ़ाइल के लिए CF DSG आवश्यकताओं का हिस्सा है।  

इतिहास
  • इतिहास (सेCFऔरएसीडीमेटाडाटा मानकों) प्रत्येक प्रसंस्करण चरण के लिए एक लाइन के साथ एक RECOMMENDED बहु लाइन स्ट्रिंग वैश्विक विशेषता है कि डेटा गुजर रहा है। उदाहरण के लिए,
    <att name="history">2011-08-05T08:55:02Z CMOR: Rewrote data to comply with CF standards.  
    2012-04-08T08:34:58Z CMOR: Converted 'height' type from 'd' to 'f'.</att>
    • आदर्श रूप से, प्रत्येक लाइन में ISO 8601:2004 है (E) स्वरूपित दिनांक + समय (उदाहरण के लिए, 2011-08-05T08:55:02Z) इसके बाद प्रसंस्करण चरण का वर्णन होता है।
    • ERDDAP™यदि यह पहले से मौजूद नहीं है तो यह बनाता है।
    • अगर यह पहले से ही मौजूद है,ERDDAP™मौजूदा जानकारी को नई जानकारी प्रदान करेगा।
    • इतिहास महत्वपूर्ण है क्योंकि यह ग्राहकों को डेटा के मूल स्रोत पर वापस जाने की अनुमति देता है।
infoUrl
  • infoUrl इस डेटासेट के बारे में अधिक जानकारी के साथ एक वेब पेज के यूआरएल के साथ एक REQUIRED वैश्विक विशेषता है। (आमतौर पर सोर्स संस्था की वेबसाइट पर) । उदाहरण के लिए,
    <att name="infoUrl">http://www.globec.org/</att>
    • या तो डेटासेट वैश्विकस्रोतAttributesवैश्विक<addAttributes> इस विशेषता में शामिल है।
    • infoUrlक्योंकि यह ग्राहकों को मूल स्रोत से डेटा के बारे में अधिक जानने की अनुमति देता है।
    • ERDDAP™एक लिंक प्रदर्शित करता हैinfoUrlडेटासेट के डेटा एक्सेस फॉर्म पर ( datasetID एचटीएमएल) A Graph web page ( datasetID ग्राफ़) , और अन्य वेब पेज।
    • यदि URL में क्वेरी पार्ट है (" के बाद?) , यह पहले से ही होना चाहिएप्रतिशत encoded। आपको बाधाओं में विशेष वर्णों को कोडित करने की आवश्यकता है (प्रारंभिक '&' और मुख्य के अलावा'='यदि कोई हो) %HHH के रूप में, जहां HH चरित्र का 2 अंक hexadecimal मान है। आमतौर पर, आपको बस कुछ punctuation अक्षरों को बदलने की आवश्यकता होती है: % में %25, और %26 में, "%22 में,<%3C में =%3D में>%3E में +%2B में,|%7C में\[%5B में\]%5D में,%20 में अंतरिक्ष, और # 127 से ऊपर के सभी पात्रों को अपने UTF-8 फॉर्म में परिवर्तित करें और फिर %HH प्रारूप में UTF-8 फॉर्म के प्रत्येक बाइट को कोडित करें। (मदद के लिए प्रोग्रामर से पूछें) । उदाहरण के लिए, &stationID>="41004" बन गयाstationID%3E =%2241004%22 जब आप एक्सेस करते हैं तो पर्सेंट एन्कोडिंग की आवश्यकता होती हैERDDAPएक ब्राउज़र के अलावा अन्य सॉफ्टवेयर के माध्यम से। ब्राउज़र आमतौर पर आपके लिए प्रतिशत एन्कोडिंग संभालते हैं। कुछ स्थितियों में, आपको A-Za-z0-9\_-! ' () \*, लेकिन अभी भी प्रारंभिक '&' या मुख्य कोड नहीं है'='। प्रोग्रामिंग भाषाओं में ऐसा करने के लिए उपकरण हैं (उदाहरण के लिए, देखेंJava'java.net.URLEncoder
      औरJavaस्क्रिप्टencodeURIComponent()] ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent ) ) और वहाँ रहे हैं उन वेबसाइटों के लिए जो आपके लिए प्रतिशत एनकोड / डीकोड करते हैं
    • चूंकिdatasets.xmlएक XML फ़ाइल है, आप MUST भी और सभी '&', '<यूआरएल में '&', '<',' और '>' प्रतिशत एन्कोडिंग के बाद।
    • infoUrlइसके लिए अद्वितीय हैERDDAP। यह किसी भी मेटाडाटा मानक से नहीं है।
संस्था
  • संस्था (सेCFऔरएसीडीमेटाडाटा मानकों) एक REQUIRED वैश्विक विशेषता है जिसमें संस्थान के नाम का संक्षिप्त संस्करण है जो इस डेटा का स्रोत है (आमतौर पर एक संक्षिप्त, आमतौर पर आमतौर पर आमतौर पर एक संक्षिप्त शब्द)।<20 वर्ण). उदाहरण के लिए,
    <att name="institution">NASA GSFC</att>
    • या तो डेटासेट वैश्विकस्रोतAttributesवैश्विक<addAttributes> इस विशेषता में शामिल है।
    • ERDDAP™जब भी यह डेटासेट की सूची प्रदर्शित करता है तो संस्थान प्रदर्शित करता है। यदि यहाँ एक संस्थान का नाम 20 अक्षरों से अधिक लंबा है, तो केवल पहले 20 अक्षर डेटासेट की सूची में दिखाई देंगे। (लेकिन पूरे संस्थान को आसन्न "? आइकन पर माउस कर्सर डालने से देखा जा सकता है) ।
    • यदि आप संस्थान को सूची में जोड़ते हैं<categoryAttributes> मेंERDDAP'साइटमैपफ़ाइल, उपयोगकर्ता आसानी से उसी संस्थान से डेटासेट पा सकते हैंERDDAPहोम पेज पर "वर्ग द्वारा डेटासेट के लिए खोज"।
कीवर्ड
  • कीवर्ड (सेएसीडीमेटाडाटा मानक) Recommended comma-separated list of words and लघु वाक्यांशों (उदाहरण के लिए,GCMD विज्ञान कीवर्ड) यह एक सामान्य तरीके से डेटासेट का वर्णन करता है और डेटासेट के किसी अन्य ज्ञान को नहीं मानते हैं। (उदाहरण के लिए, महासागरीय डेटा के लिए, महासागर शामिल हैं) । उदाहरण के लिए,
    <att name="keywords">ano, circulation, coastwatch, currents, derived, Earth Science &gt; Oceans &gt; Ocean Circulation &gt; Ocean Currents, eastward, eastward\\_sea\\_water\\_velocity, experimental, hf radio, meridional, noaa, northward, northward\\_sea\\_water\\_velocity, nuevo, ocean, oceans, radio, radio-derived, scan, sea, seawater, velocity, water, zonal</att>  

चूंकिdatasets.xmlएक XML दस्तावेज़ है, वर्ण और,<कीवर्ड की तरह एक विशेषता में (उदाहरण के लिए, GCMD विज्ञान कीवर्ड में > वर्ण) इसे एंडैम्प के रूप में वर्गीकृत किया जाना चाहिए;<क्रमश:, और & gt; जब डेटासेट में लोड हो जाता हैERDDAP,

  • "Earth science >" को किसी भी GCMD कीवर्ड की शुरुआत में जोड़ा जाता है जिसमें इसकी कमी होती है।
  • GCMD कीवर्ड को टाइटल केस में बदल दिया जाता है (अर्थात्, पहले अक्षरों को पूंजीकृत किया जाता है) ।
  • कीवर्ड क्रमबद्ध क्रम में व्यवस्थित होते हैं और किसी भी नए अक्षर को हटा दिया जाता है।  
keywords\_vocabulary
  • keywords\_vocabulary (सेएसीडीमेटाडाटा मानक) एक RECOMMENDED विशेषता है: यदि आप अपने कीवर्ड विशेषता में शब्दों / वाक्यांशों के लिए एक दिशानिर्देश का पालन कर रहे हैं (उदाहरण के लिए, GCMD विज्ञान कीवर्ड) , उस गाइडलाइन का नाम यहां रखें। उदाहरण के लिए,
    <att name="keywords\\_vocabulary">GCMD Science Keywords</att>  
लाइसेंस
  • लाइसेंस (सेएसीडीमेटाडाटा मानक) लाइसेंस और/या उपयोग प्रतिबंधों के साथ एक STRONGLY RECOMMEND वैश्विक विशेषता है। उदाहरण के लिए,
    <att name="license">\\[standard\\]</att>
    • यदि\[मानक\]" विशेषता मान में होता है, इसे मानक द्वारा प्रतिस्थापित किया जाएगाERDDAP™लाइसेंस<StandardLicenseERDDAP' \[tomcat\]/ webapps/erddap/WEB-INF/classes/gov/noaa/pfel/erddap/util/message.xml फ़ाइल.  
Metadata\_Conventions
  • Metadata\_Conventions पुरानाACDD 1.0 (जिसे पहचाना गया थाMetadata\_Conventionsजैसा कि "UnidataDataset डिस्कवरी v1.0) मेटाडाटा मानक। विशेषता मान इस डेटासेट द्वारा उपयोग किए जाने वाले मेटाडाटा सम्मेलनों की एक कॉमा-सेपरेटेड सूची थी। यदि कोई डेटासेट ACDD 1.0 का उपयोग करता है, तो यह विशेषता STRONGLY RECOMMENDED है, उदाहरण के लिए,
    <att name="Metadata\\_Conventions">COARDS, CF-1.6, Unidata Dataset Discovery v1.0</att>  

लेकिनERDDAP™अब ACDD-1.3 की सिफारिश करता है। यदि आपके पास हैACDD-1.3 का उपयोग करने के लिए अपने डेटासेट को स्विच किया, का उपयोगMetadata\_ConventionsSTRONGLY DISCOURAGED: सिर्फ इस्तेमाल किया [[]<सम्मेलनों> (#conventions) इसके बजाय।

processing\_level
  • processing\_level (सेएसीडीमेटाडाटा मानक) प्रसंस्करण का एक RECOMMENDED पाठ्य विवरण है (उदाहरण के लिए,NASA उपग्रह डाटा प्रोसेसिंग का स्तरउदाहरण के लिए, लेवल 3) या गुणवत्ता नियंत्रण स्तर (उदाहरण के लिए, विज्ञान गुणवत्ता) डेटा का। उदाहरण के लिए,
    <att name="processing\\_level">3</att>  
परियोजना
  • परियोजना (सेएसीडीमेटाडाटा मानक) यह परियोजना की पहचान करने के लिए एक वैकल्पिक विशेषता है कि डेटासेट का हिस्सा है। उदाहरण के लिए,
    <att name="project">GTSPP</att>  

यदि डेटासेट परियोजना का हिस्सा नहीं है, तो इस विशेषता का उपयोग न करें। तुलना मेंcreator\_nameयह परियोजना पर केंद्रित है (एक व्यक्ति या संगठन नहीं, जो कई परियोजनाओं में शामिल हो सकता है) ।

publisher\_name
  • publisher\_name (सेएसीडीमेटाडाटा मानक) व्यक्ति, संगठन या परियोजना की पहचान करने का तरीका है जो इस डेटासेट को प्रकाशित कर रहा है। उदाहरण के लिए,
    <att name="publisher\\_name">JPL</att>  

उदाहरण के लिए, आप प्रकाशक हैं अगर किसी अन्य व्यक्ति या समूहबनायाडेटासेटERDDAP। यदि "publisher" वास्तव में डेटासेट पर लागू नहीं होता है, तो इस विशेषता को छोड़ दें। तुलना मेंcreator\_name, प्रकाशक शायद डेटा को संशोधित या फिर से संसाधित नहीं किया गया था; प्रकाशक सिर्फ एक नए स्थान पर उपलब्ध डेटा बना रहा है।

publisher\_email
  • publisher\_email (सेएसीडीमेटाडाटा मानक) एक ईमेल पते की पहचान करने का तरीका है (सही ढंग से स्वरूपित, उदाहरण के लिए, john \_smith@great.org) यह प्रकाशक से संपर्क करने का एक तरीका प्रदान करता है। उदाहरण के लिए,
    <att name="publisher\\_email">john\\_smith@great.org</att>  

यदि "publisher" वास्तव में डेटासेट पर लागू नहीं होता है, तो इस विशेषता को छोड़ दें।

publisher\_url
  • publisher\_url (सेएसीडीमेटाडाटा मानक) उस संगठन के लिए एक URL की पहचान करने का तरीका है जिसने डेटासेट प्रकाशित किया था, या इस डेटासेट के बारे में प्रकाशक की जानकारी के साथ एक URL है। (लेकिन इसका उद्देश्य अधिक हैinfoUrl) । उदाहरण के लिए,
    <att name="publisher\\_url">https://podaac.jpl.nasa.gov</att>  

यदि "publisher" वास्तव में डेटासेट पर लागू नहीं होता है, तो इस विशेषता को छोड़ दें।

real\_time
  • real\_time एक वैश्विक स्ट्रिंग विशेषता है (किसी भी मानक से नहीं) यह दर्शाता है कि यह एक वास्तविक समय डेटासेट है। उदाहरण के लिए,
    <att name="real\\_time">true</att>  

यदि यह गलत है (डिफ़ॉल्ट) ,ERDDAP™फ़ाइल प्रकारों के लिए अनुरोधों के जवाब कैश करेगा जहां पूरी फ़ाइल पहले बनाई जानी चाहिएERDDAP™उपयोगकर्ता को जवाब भेजने के लिए शुरू कर सकते हैं और उन्हें लगभग 15 मिनट तक पुन: उपयोग कर सकते हैं। (उदाहरण के लिए.ncPNG) । अगर यह सच है,ERDDAP™कभी जवाब फ़ाइलों को कैश नहीं करेगा और हमेशा नए बनाए गए फ़ाइलों को वापस कर देगा।

sourceUrlविशेषता
  • sourceUrl डेटा के स्रोत के यूआरएल के साथ एक वैश्विक विशेषता है। उदाहरण के लिए,
    <att name="sourceUrl">https://opendap.co-ops.nos.noaa.gov/ioos-dif-sos/SOS</att>  
    (लेकिन यह सब एक पंक्ति में डाल दिया)
    • ERDDAP™आमतौर पर इस वैश्विक विशेषता को स्वचालित रूप से बनाता है। दो अपवाद EDDTableFrom हैंHyraxफ़ाइलें और EDDTableFromThreddsFiles।
    • यदि स्रोत स्थानीय फ़ाइल है और फ़ाइल आपके संगठन द्वारा बनाई गई थी, तो उपयोग करें
        <att name="sourceUrl">(local files)</att>
    • यदि स्रोत स्थानीय डेटाबेस है और डेटा आपके संगठन द्वारा बनाया गया है, तो उपयोग करें
        <att name="sourceUrl">(local database)</att>
    • sourceUrlयह महत्वपूर्ण है क्योंकि यह ग्राहकों को डेटा के मूल स्रोत पर बैकट्रैक करने की अनुमति देता है।
    • sourceUrlइसके लिए अद्वितीय हैERDDAP। यह किसी भी मेटाडाटा मानक से नहीं है।
standard\_name\_vocabulary
  • standard\_name\_vocabulary (सेएसीडीमेटाडाटा मानक) नियंत्रित शब्दावली के नाम की पहचान करने के लिए एक RECOMMENDED विशेषता है जिसमें से परिवर्तनीयstandard\_name(s) लिया जाता है। उदाहरण के लिए,
    <att name="standard\\_name\\_vocabulary">CF Standard Name Table v77</att>  

संस्करण 77 के लिएCF मानक नाम तालिका।  

subsetVariables
  • subsetVariables (केवल EDDTable Datasets के लिए) एक Recommended वैश्विक विशेषता है कि आप की एक comma-separated सूची निर्दिष्ट करने देता है [<dataVariable> (#datavariable) destinationNameचर की पहचान करने के लिए जिनके पास सीमित संख्या में मान हैं (एक अन्य तरीका कहा गया है: चर जिसके लिए प्रत्येक मान में कई डुप्लिकेट हैं।) । उदाहरण के लिए,
    <att name="subsetVariables">station\\_id, longitude, latitude</att>  

यदि यह विशेषता मौजूद है, तो डेटासेट में एक होगा datasetID वेब पेज (प्रत्येक डेटासेट सूची में इसके लिए एक लिंक) जो उपयोगकर्ताओं को जल्दी और आसानी से डेटा के विभिन्न सेटों का चयन करने देता है।

  • प्रत्येक बार डेटासेट लोड हो जाता है,ERDDAPडिस्क पर लोड और स्टोर सभी अलग-अलग के साथ एक तालिका है () सबसेट के संयोजन चर के चर मूल्यों।ERDDAP™पढ़ सकते हैं किsubsetVariablesतालिका और यह बहुत जल्दी प्रक्रिया (विशेष रूप से डेटा फ़ाइलों के बहुत सारे पढ़ने या डेटाबेस या अन्य बाहरी सेवा से डेटा प्राप्त करने की तुलना में) ।
  • यह अनुमति देता हैERDDAP™3 चीजें करने के लिए:
    1. यह अनुमति देता हैERDDAP™डेटा एक्सेस फॉर्म पर एक ड्रॉपडाउन सूची में संभावित मूल्यों की एक सूची डालने के लिए, एक ग्राफ वेब पेज बनाएं, और .subset वेबपेज।
    2. यह अनुमति देता हैERDDAP™उस डेटासेट के लिए एक .subset वेबपेज प्रदान करने के लिए। यह पृष्ठ रोचक है क्योंकि यह उन चरों के मूल्यों के मान्य संयोजनों को ढूंढना आसान बनाता है, जो कुछ डेटासेटों और कुछ चरों के लिए बहुत कठिन है। (लगभग असंभव) । फिर, सभी उपयोगकर्ता विशिष्ट के लिए अनुरोध करता है () सबसेट चर डेटा बहुत तेज होगा।
    3. यदि कोई उपयोगकर्ता अनुरोध है कि केवल उन चरों की एक सबसेट को संदर्भित करता है,ERDDAP™जल्दी पढ़ सकते हैंsubsetVariablesतालिका, और अनुरोध का जवाब दें। यह एक टन समय और प्रयास को बचा सकता हैERDDAP।
  • आदेशdestinationNameआप निर्दिष्ट करते हैं, जिस पर क्रमबद्ध क्रम निर्धारित करता है datasetID इसलिए आप आमतौर पर सबसे महत्वपूर्ण चर पहले निर्दिष्ट करेंगे, फिर कम से कम महत्वपूर्ण। उदाहरण के लिए, कई स्टेशनों के लिए समय श्रृंखला डेटा के साथ डेटासेट के लिए, आप उपयोग कर सकते हैं, उदाहरण के लिए,
        <att name="subsetVariables">station\\_id, longitude, latitude</att>  

ताकि मूल्यों को स्टेशन \_id द्वारा क्रमबद्ध किया जा सके।

  • जाहिर है, यह आपकी पसंद है जो चर में शामिल होने के लिए हैsubsetVariablesसूची, लेकिन सुझाव दिया उपयोग है:

सामान्य तौर पर, वेरिएबल्स शामिल हैं जिसके लिए आप चाहते हैंERDDAP™डेटासेट के डेटा एक्सेस फॉर्म पर विकल्पों की एक ड्रॉप-डाउन सूची प्रदर्शित करने के लिए (एचटीएमएल) मेक-ए-ग्राफ (ग्राफ़) वेब पेज

सामान्य तौर पर, डेटासेट की विशेषताओं के बारे में जानकारी के साथ चर शामिल करें (विशेष रूप से स्टेशनों, प्रोफाइल और/या प्रक्षेपवक्रों सेcdm \_timeseries \_variables,cdm \_profile \_variables,cdm \_trajectory \_variables) । इन चरों के लिए केवल कुछ अलग-अलग मान हैं, इसलिए वे ड्रॉप-डाउन सूचियों के साथ अच्छी तरह से काम करते हैं।

कभी भी व्यक्तिगत टिप्पणियों से जुड़े किसी भी डेटा चर को शामिल न करें (उदाहरण के लिए, समय, तापमान, लवणता, वर्तमान गति) मेंsubsetVariablesसूची इन चरों के लिए कई अलग-अलग मान हैं, इसलिए एक ड्रॉप-डाउन सूची लोड करने में धीमा होगी और साथ में काम करना कठिन होगा। (नहीं) ।

  • यदि इन चरों के विशिष्ट संयोजनों की संख्या लगभग 1,000,000 से अधिक है, तो आपको प्रतिबंधित करने पर विचार करना चाहिएsubsetVariablesकि आप 1,000,000 से नीचे अलग संयोजनों की संख्या को कम करने के लिए निर्दिष्ट; अन्यथा, datasetID वेब पृष्ठों को धीरे से उत्पन्न किया जा सकता है। अत्यधिक मामलों में, डेटासेट में लोड नहीं हो सकता हैERDDAP™क्योंकि अलग संयोजनों की सूची पैदा करने के लिए बहुत ज्यादा स्मृति का उपयोग करता है। यदि हां, तो आप कुछ चरों को हटा सकते हैंsubsetVariablesसूची
  • यदि किसी एक सबसेट चर के विशिष्ट मानों की संख्या लगभग 20,000 से अधिक है, तो आपको उस परिवर्तनीय को सूची में शामिल नहीं करना चाहिएsubsetVariablesअन्यथा, यह संचारित करने के लिए लंबे समय तक लेता है datasetID सबसेट datasetID ग्राफ़, और datasetID HTML वेब पेज इसके अलावा, मैक पर, स्क्रॉल बार की कमी के कारण 500 से अधिक वस्तुओं के साथ ड्रॉप डाउन सूची से चयन करना बहुत मुश्किल है। एक समझौता है: सूची से चर को हटा दें जब उपयोगकर्ता ड्रॉप डाउन सूची से मान चुनने की संभावना नहीं रखते हैं।
  • आपको यह देखने के लिए प्रत्येक डेटासेट का परीक्षण करना चाहिए कि क्या है?subsetVariablesसेटिंग ठीक है। यदि स्रोत डेटा सर्वर धीमा है और यह बहुत लंबा लगता है (या विफल) डेटा डाउनलोड करने के लिए, या तो निर्दिष्ट चर की संख्या को कम करें या हटा देंsubsetVariablesवैश्विक विशेषता।
  • सबसेट चर बहुत उपयोगी है। यदि आपका डेटासेट उपयुक्त है, तो कृपया एक बनाएंsubsetVariablesविशेषता।
  • EDDTableFromSOSस्वचालित रूप से जोड़ता है
        <att name="subsetVariables">station\\_id, longitude, latitude</att>  

जब डेटासेट बनाया जाता है।

  • संभावित चेतावनी: यदि उपयोगकर्ता का उपयोग करना datasetID सबसेट वेब पेज एक मूल्य का चयन करता है जिसमें एक कैरिज रिटर्न या न्यूलाइन कैरेक्टर होता है, datasetID सबसेट विफल हो जाएगा।ERDDAP™कुछ HTML विवरणों के कारण इस मुद्दे के आसपास काम नहीं कर सकते। किसी भी मामले में, डेटा से कैरिज रिटर्न और न्यूलाइन वर्णों को हटाने के लिए लगभग हमेशा एक अच्छा विचार है। यदि आप EDDTable समस्या को ठीक करने में मदद करते हैं।subsetVariablesमें DataTable विधिERDDAPडेटा मानों का पता लगाता है जो परेशानी पैदा करेगा, यह ईमेल को ऑफेंड मूल्यों की सूची के साथ एक चेतावनी ईमेल करेगा सब कुछ सेटअप.xml में निर्दिष्ट ईमेल पते के लिए। इस तरह, आप जानते हैं कि क्या तय किया जाना चाहिए।
  • पूर्व निर्मित सबसेट टेबल। आम तौर पर, जबERDDAP™डेटासेट लोड करता है, यह विशिष्ट अनुरोध करता है () डेटा स्रोत से सबसेट चर डेटा तालिका, सिर्फ एक सामान्य डेटा अनुरोध के माध्यम से। कुछ मामलों में, यह डेटा डेटा स्रोत से उपलब्ध नहीं है या डेटा स्रोत से प्राप्त डेटा स्रोत सर्वर पर कठिन हो सकता है। यदि हां, तो आप एक तालिका की आपूर्ति कर सकते हैं जिसमें जानकारी एक में शामिल है।.jsonया नाम के साथ .csv फ़ाइल tomcat /content/erddap/subset/ datasetID .json (या .csv) । यदि उपस्थित हो,ERDDAP™जब डेटासेट लोड हो जाता है और इसे सबसेट डेटा के स्रोत के रूप में उपयोग किया जाता है तो इसे एक बार पढ़ा जाएगा।
  • यदि इसे पढ़ने में त्रुटि होती है तो डेटासेट लोड होने में विफल हो जाएगा।
  • यह MUST सटीक समान स्तंभ नाम है (उदाहरण के लिए, समान मामला) जैसा<subsetVariables>, लेकिन कॉलम किसी भी क्रम में हो सकता है।
  • यह MAY में अतिरिक्त कॉलम हैं (उन्हें हटा दिया जाएगा और नव अनावश्यक पंक्तियों को हटा दिया जाएगा) ।
  • मिसिंग मान लापता मान होना चाहिए (नहीं -99) ।
  • .jsonफ़ाइलों को बनाने के लिए थोड़ा कठिन हो सकता है लेकिन यूनिकोड वर्णों के साथ अच्छी तरह से सौदा किया जा सकता है।.jsonयदि आप उन्हें बनाने के लिए फ़ाइलों को बनाना आसान हैERDDAP।
  • .csv फ़ाइलों के साथ काम करना आसान है, लेकिन केवल ISO 8859-1 वर्णों के लिए उपयुक्त है। .csv फाइलें MUST में पहली पंक्ति और बाद की पंक्तियों पर डेटा पर कॉलम नाम हैं।
  • विशाल डेटासेट के लिए या जब<subsetVariables> गलत विन्यास किया जाता है, मानों के संयोजन की तालिका बहुत बड़ी हो सकती है, जिससे बहुत ज्यादा डेटा या OutOfMemory त्रुटियों का कारण बन सकता है। समाधान की सूची से चर को हटाने के लिए है<subsetVariables> जिसके लिए वहाँ मूल्यों की एक बड़ी संख्या हैं, या उस तालिका के आकार उचित होने तक आवश्यकतानुसार चर को हटा दें। त्रुटि के बावजूद, त्रुटि के कुछ हिस्सोंERDDAP™कि उपयोगsubsetVariablesप्रणाली अच्छी तरह से काम नहीं करती (उदाहरण के लिए, वेब पेज बहुत धीरे-धीरे लोड होते हैं) जब बहुत अधिक पंक्तियां होती हैं (उदाहरण के लिए, मिलियन से अधिक) उस तालिका में।
  • subsetVariablesयह निर्दिष्ट करने के लिए कुछ भी नहीं है कि कौन से परिवर्तनीय उपयोगकर्ता बाधाओं में उपयोग कर सकते हैं, यानी उपयोगकर्ता डेटासेट के उप सेट का अनुरोध कैसे कर सकते हैं।ERDDAP™हमेशा बाधाओं को किसी भी चर को संदर्भित करने की अनुमति देता है।
टाइम यूनिट

टाइम और टाइमस्टैम्पकॉलम में ISO 8601:2004 होना चाहिए (E) स्वरूपित दिनांक + समय जेड स्ट्रिंग्स (उदाहरण के लिए, 1985-01-31T15:31:00Z) ।  

सारांश
  • सारांश (सेCFऔरएसीडीमेटाडाटा मानकों) डेटासेट के लंबे विवरण के साथ एक REQUIRED वैश्विक विशेषता है (आमतौर पर)<500 वर्ण). उदाहरण के लिए,
    <att name="summary">VIIRSN Level-3 Standard Mapped Image, Global, 4km, Chlorophyll a, Daily. The Visible and Infrared Imager/Radiometer Suite (VIIRS) is a multi-disciplinary instrument that flies on the National Polar-orbiting Operational Environmental Satellite System (NPOESS) series of spacecraft, including the NPOESS Preparatory Project (NPP).</att>
    • या तो डेटासेट वैश्विकस्रोतAttributesवैश्विक<addAttributes> इस विशेषता में शामिल है।
    • सारांश बहुत महत्वपूर्ण है क्योंकि यह ग्राहकों को डेटासेट का वर्णन पढ़ने की अनुमति देता है जिसमें शीर्षक की तुलना में अधिक जानकारी होती है और इस प्रकार जल्दी से यह समझने की कोशिश करता है कि डेटासेट क्या है।
    • सलाह: कृपया सारांश लिखें ताकि यह कुछ यादृच्छिक व्यक्ति को डेटासेट का वर्णन करने के लिए काम करेगा जो आप सड़क पर या एक सहयोगी से मिलते हैं। पढ़नापांच डब्ल्यू और एक एचकौन डेटासेट बनाया? क्या जानकारी एकत्र की गई थी? जब डेटा एकत्र किया गया था? यह कहाँ एकत्र किया गया था? यह क्यों एकत्र किया गया था? यह कैसे एकत्र किया गया था?
    • ERDDAP™डेटासेट के डेटा एक्सेस फॉर्म पर सारांश प्रदर्शित करता है ( datasetID एचटीएमएल) A Graph web page ( datasetID ग्राफ़) , और अन्य वेब पेज।ERDDAP™FGDC और ISO 19115 दस्तावेजों को बनाते समय सारांश का उपयोग करता है।
testOutOfDate
  • testOutOfDate (वैकल्पिकERDDAP-विशिष्ट वैश्विक मेटाडाटा विशेषता, किसी भी मानक से नहीं) निर्दिष्ट करता है, सरल तरीके से, जब निकट-वास्तविक समय डेटासेट के लिए डेटा को आउट-ऑफ-डेट माना जाता है, जैसा कि निर्दिष्ट किया गया हैnow- n उदाहरण के लिए,now-डेटा के लिए 2 दिन जो आमतौर पर टाइम वैल्यू के 24-48 घंटे बाद दिखाई देते हैं। पूर्वानुमान डेटा के लिए, अब उपयोग करें + n उदाहरण के लिए, भविष्य में 8 दिनों में, भविष्य में पूर्वानुमान डेटा के लिए अब + 6 दिन। (देखेंnow- n वाक्यविन्यास।) यदि डेटासेट के लिए अधिकतम समय मान निर्दिष्ट समय की तुलना में हाल ही में है, तो डेटासेट को अप-टू-डेट माना जाता है। यदि निर्दिष्ट समय से अधिकतम समय मान पुराना है तो डेटासेट को अप-टू-डेट माना जाता है। आउट-ऑफ-डेट डेटासेट के लिए, संभवतः डेटा स्रोत के साथ एक समस्या है, इसलिएERDDAP™हाल के समय बिंदुओं से डेटा तक पहुंच पाने में असमर्थ है।

The The most of thetestOutOfDateमूल्य में एक स्तंभ के रूप में प्रदर्शित होता हैallDatasetsडेटासेटअपनेERDDAP। इसका उपयोग आउटऑफ़डेट इंडेक्स की गणना करने के लिए भी किया जाता है, जो अन्य कॉलम में हैallDatasetsडेटासेट। यदि सूचकांक है<1, डेटासेट को अप-टू-डेट माना जाता है। यदि सूचकांक है<=1, डेटासेट को आउट-ऑफ-डेट माना जाता है। यदि सूचकांक है<=2, डेटासेट को बहुत पुराना माना जाता है।

The The most of thetestOutOfDateमूल्य का भी उपयोग किया जाता हैERDDAP™उत्पन्न करने के लिए https://yourDomain/erddap/outOfDateDatasets.html वेब पेज (उदाहरण) जो डेटासेट दिखाता है<testOutOfDate> टैग, डेटासेट के साथ यह बताया गया है कि वे किस तरह हैं। यदि आप फ़ाइल प्रकार बदल जाते हैं (HTML से .csv तक,.jsonlCSV,.nc,.tsv...) , आप विभिन्न फ़ाइल स्वरूपों में उस जानकारी प्राप्त कर सकते हैं।

जब संभव हो,जनरेट DatasetXmlजोड़नाtestOutOfDateवैश्विक विशेषताaddAttributesडेटासेट का। यह मान एक सुझाव है जो जनरेटडाटासेटएक्सएमएल को उपलब्ध सूचना पर आधारित है। यदि मूल्य उचित नहीं है, तो इसे बदल दें।

यहां "आउट-ऑफ-डेट" बहुत अलग है<रीलोड हरNMinutes (#reloadeverynminutes) , जो कैसे अप-टू-डेट से संबंधित हैERDDAPडेटासेट का ज्ञान है। The The most of the<testOutOfDate> प्रणाली मानती है किERDDAPडेटासेट का ज्ञान अप-टू-डेट है। प्रश्न<testOutOfDate> सौदों के साथ है: क्या डेटा के स्रोत के साथ कुछ गलत दिखाई देता है, जिससे हाल के डेटा को सुलभ नहीं किया जा सकता हैERDDAP?

शीर्षक
  • शीर्षक (सेCFऔरएसीडीमेटाडाटा मानकों) डेटासेट के संक्षिप्त विवरण के साथ एक आवश्यक वैश्विक विशेषता है (आमतौर पर)<= 95 वर्ण). उदाहरण के लिए,
    <att name="title">VIIRSN Level-3 Mapped, Global, 4km, Chlorophyll a, Daily</att>
    • या तो डेटासेट वैश्विकस्रोतAttributesवैश्विक<addAttributes> इस विशेषता में शामिल है।
    • शीर्षक महत्वपूर्ण है क्योंकि द्वारा प्रस्तुत डाटासेट की हर सूचीERDDAP (अन्य खोज परिणामों के अलावा) वर्णमाला क्रम में डेटासेट को सूचीबद्ध करता है। इसलिए यदि आप डेटासेट के आदेश को निर्दिष्ट करना चाहते हैं, या कुछ डेटासेट समूहीकृत हैं, तो आपको उस मन में शीर्षक बनाना होगा। डेटासेट की कई सूची (उदाहरण के लिए, किसी श्रेणी की खोज के जवाब में) , पूरी सूची का एक सबसेट दिखाने के लिए और एक अलग क्रम में। इसलिए प्रत्येक डेटासेट का शीर्षक अपने आप में खड़ा होना चाहिए।
    • यदि शीर्षक में "डिप्रेक्टेड" शब्द शामिल है (सभी पूंजी पत्र) फिर डेटासेट को खोजों में कम रैंकिंग मिलेगी।  
<axisVariable& gt;
  • [ ** <axisVariable> ** ] (#axisvariable) एक आयाम का वर्णन करने के लिए प्रयोग किया जाता है (इसे "अक्ष" भी कहा जाता है) । के लिएEDDGridडेटासेट, एक या अधिकaxisVariableटैग की आवश्यकता है, और सभीdataVariablesहमेशा सभी अक्ष चर को साझा/उपयोग करते हैं। (क्यों? क्या होगा?)
    वहाँ MUST डेटा चर के प्रत्येक आयाम के लिए एक अक्ष चर हो। एक्सिस वेरिएबल्स MUST को इस क्रम में निर्दिष्ट किया जाएगा कि डेटा वेरिएबल्स उनका उपयोग करते हैं। (EDDTable Datasets)<axisVariable> टैग। एक मांसल उदाहरण है:

  <axisVariable>
      <sourceName\>MT</sourceName>
      <destinationName\>time</destinationName>
      <addAttributes>
        <att name="units">days since 1902-01-01T12:00:00Z</att>
      </addAttributes>
  </axisVariable>

<axisVariable> निम्नलिखित सबटैग का समर्थन करता है:

<sourceName\>
  • [<sourceName\> (#sourcename) -- परिवर्तनीय के लिए डेटा स्रोत का नाम। यह नाम है किERDDAP™डेटा स्रोत से डेटा का अनुरोध करते समय उपयोग करेगा। यह नाम है किERDDAP™जब डेटा डेटा स्रोत से वापस आ जाता है तो देखेंगे। यह मामला संवेदनशील है। यह आवश्यक है।
<destinationName\>
  • [<destinationName\> (#Destinationname) वेरिएबल का नाम है जिसे दिखाया जाएगा और उसके द्वारा इस्तेमाल किया जाएगा।ERDDAP™उपयोगकर्ता
    • यह वैकल्पिक है। यदि अनुपस्थित हो तो,sourceNameप्रयोग किया जाता है।
    • यह उपयोगी है क्योंकि यह आपको एक क्रिप्टिक या अजीब बदलने की अनुमति देता हैsourceName।
    • destinationNameमामला संवेदनशील है।
    • destinationNameTo start with a letter. (A-Z, a-z) और MUST 0 या अधिक अक्षरों का पालन किया जा सकता है (A-Z, a-z, 0-9, and \_) । (पहले '-' की अनुमति दी गई थीERDDAP™संस्करण 1.10.) यह प्रतिबंध अक्ष परिवर्तनीय नामों को समान होने की अनुमति देता हैERDDAP™, प्रतिक्रिया फ़ाइलों में, और सभी सॉफ्टवेयर में जहां उन फ़ाइलों का उपयोग किया जाएगा, प्रोग्रामिंग भाषाओं सहित (लाइकPython,Matlab, औरJavaस्क्रिप्ट) जहां चर नामों पर समान प्रतिबंध हैं।
    • मेंEDDGridडाटासेटअक्षांश, ऊंचाई, गहराई और समयअक्ष चर विशेष हैं।  
axisVariable <addAttributes>
  • [<addAttributes> (#variable-addattributes) विशेषताओं के एक OPTIONAL सेट को परिभाषित करता है ( नाम = मूल्य ) जो एक चर के लिए स्रोत की विशेषताओं में जोड़ा जाता है, ताकि एक चर के लिए संयुक्त गुण बनाया जा सके। यदि परिवर्तनशीलस्रोतAttributesया<addAttributes> शामिलscale\_factorऔर/oradd\_offsetगुण, उनके मूल्यों का उपयोग ग्राहक को वितरण से पहले स्रोत से डेटा को अनपैक करने के लिए किया जाएगा। (परिणाम मूल्य = स्रोत मानscale\_factor+add\_offset) । अनपैक्ड वेरिएबल समान डेटा प्रकार का होगा (उदाहरण के लिए, फ्लोट) जैसाscale\_factorऔरadd\_offsetमान  
<dataVariable& gt;
  • [ ** <dataVariable> ** ] (#datavariable) आवश्यक है (लगभग सभी डेटासेट के लिए) भीतर टैग<डेटासेट> टैग जिसका उपयोग डेटा चर का वर्णन करने के लिए किया जाता है। इस टैग के 1 या अधिक उदाहरण हैं। एक मांसल उदाहरण है:

  <dataVariable>
      <sourceName\>waterTemperature</sourceName>
      <destinationName\>sea\_water\_temperature</destinationName>
      <dataType>float</dataType>
      <addAttributes>
        <att name="ioos\_category">Temperature</att>
        <att name="long\_name">Sea Water Temperature</att>
        <att name="standard\_name">sea\_water\_temperature</att>
        <att name="units">degree\_C</att>
      </addAttributes>
  </dataVariable>

<dataVariable> निम्नलिखित सबटैग का समर्थन करता है:

<sourceName& gt;
  • [<sourceName> (#sourcename) -- परिवर्तनीय के लिए डेटा स्रोत का नाम। यह नाम है किERDDAP™डेटा स्रोत से डेटा का अनुरोध करते समय उपयोग करेगा। यह नाम है किERDDAP™जब डेटा डेटा स्रोत से वापस आ जाता है तो देखेंगे। यह मामला संवेदनशील है। यह आवश्यक है।
समूह

CF ने CF v1.8 के साथ समूहों के लिए समर्थन जोड़ा। ~2020 में शुरूNetCDFउपकरण एक समूह में चर डालने का समर्थन करते हैं.ncफ़ाइल व्यवहार में, इसका मतलब यह है कि चर का एक लंबा नाम है जो समूह की पहचान करता है (s) उदाहरण के लिए, समूह 1a/group2c/varName.ERDDAP™"/" को परिवर्तनीय में परिवर्तित करके समूहों का समर्थन करता है<sourceName> "\_" में चर में<destinationNameउदाहरण के लिए, Group1a \_group2c \_varName। (जब आप देखते हैं कि आपको पता होना चाहिए कि समूह एक वाक्यविन्यास से ज्यादा नहीं हैं।) जब चर में सूचीबद्ध होते हैंERDDAP™एक समूह में सभी चर एक साथ दिखाई देंगे, अंतर्निहित समूह की नकल करेंगे।\[अगरERDDAP™विशेष रूप से जेनरेटडाटासेट Xml, प्रदर्शन नहीं करता है और यह स्रोत फ़ाइलों के साथ भी हो सकता है जिसमें समूह हैं, कृपया क्रिस को एक नमूना फ़ाइल ईमेल करें। जॉन at noaa.gov.\]

EDDTableFromFiles Datasets कुछ विशेष रूप से एन्कोडेड, छद्म इस्तेमाल कर सकते हैंsourceNameनए डेटा चर को परिभाषित करने के लिए, उदाहरण के लिए, एक डेटा चर होने के लिए वैश्विक विशेषता को बढ़ावा देने के लिए। देखेंयह दस्तावेज़ीकरण

HDFसंरचनाएं

शुरूERDDAP™v2.12,EDDGridFromNcFiles and fromNcFiles.EDDGridFromNcFiles अनपैक्ड में "संरचना" से डेटा पढ़ सकते हैं.nc4 और 4.hdf4 फाइलें। एक चर की पहचान करने के लिए जो एक संरचना से है,<sourceName> प्रारूप का उपयोग करना चाहिए: पूर्ण संरचनानाम | सदस्यनाम , उदाहरण के लिए समूह1/myStruct|मेरा सदस्य

फिक्स्ड वैल्यू सोर्सनाम

एक EDDTable Dataset में, यदि आप एक चर बनाने के लिए चाहते हैं (एक एकल, निश्चित मूल्य के साथ) यह स्रोत डेटासेट में नहीं है, इसका उपयोग करें:

    <sourceName>=*fixedValue*</sourceName>  

प्रारंभिक बराबर संकेत बताता हैERDDAP™एक निश्चित मूल्य का पालन करेगा।

  • संख्यात्मक चर के लिए, निश्चित मूल्य एक एकल परिमित मान या NaN होना चाहिए (मामले असंवेदनशील, उदाहरण के लिए, \=NaN) ।
  • स्ट्रिंग चर के लिए, निश्चित मूल्य एकल होना चाहिए,JSON-style स्ट्रिंग (विशेष पात्रों के साथ बच) , उदाहरण के लिए, \="My \"विशेष " स्ट्रिंग"।
  • एक टाइमस्टैम्प चर के लिए, निर्धारित मान को एक नंबर के रूप में निर्दिष्ट करें"seconds since 1970-01-01T00:00:00Z"उपयोग 1970-01-01T00:00:00Z से यूनिट = सेकंड।

अन्य टैग<dataVariableइस तरह के रूप में काम करते हैं कि यह एक नियमित चर था। उदाहरण के लिए, 0.0 के एक निश्चित मूल्य के साथ एक चर बुलाया ऊंचाई बनाने के लिए (फ्लोट) उपयोग:

<sourceName>=0</sourceName>
<destinationName\>altitude</destinationName>
<dataType>float</dataType>

असामान्य स्थितियों के लिए, आप एक भी निर्दिष्ट कर सकते हैंactual\_rangeAddAttribute, जो गंतव्य मिन और गंतव्य मैक्स के अपेक्षित मूल्यों को ओवरराइड करेगा (जो अन्यथा निर्धारित बराबर होगा मूल्य) ।  

स्क्रिप्ट SourceNames/Derived Variables

शुरूERDDAP™v2.10, एक मेंEDDTableFromFiles,EDDTableFromDatabaseयाEDDTableFromFileNamesडेटासेट<sourceName> हो सकता है अभिव्यक्ति (एक समीकरण जो एकल मान का मूल्यांकन करता है) , प्रारूप का उपयोग करना

    <sourceName>=*expression*</sourceName>  

या एक स्क्रिप्ट (बयानों की एक श्रृंखला जो एक एकल मूल्य लौटाती है) , प्रारूप का उपयोग करना

    <sourceName>=*script*</sourceName>  

ERDDAP™पर निर्भरअपाचे परियोजना Javaअभिव्यक्ति भाषा (JEXL) (लाइसेंस:अपाचे) अभिव्यक्तियों का मूल्यांकन और स्क्रिप्ट चलाने के लिए। किसी दिए गए नए चर के लिए गणना परिणामों की एक पंक्ति के भीतर की जाती है, बार-बार सभी पंक्तियों के लिए। अभिव्यक्ति और स्क्रिप्ट एक का उपयोग करते हैंJava- औरJavaस्क्रिप्ट-जैसे वाक्यविन्यास और किसी भी तरह का उपयोग कर सकते हैं ऑपरेटरों और तरीकों जो JEXL में बनाया गया है। स्क्रिप्ट भी विधियों का उपयोग कर सकते हैं (कार्य) इन कक्षाओं से:

  • कैलेंडर2, जो कॉम.cohort.util.Calendar2 में स्थिर, समय और कैलेंडर से संबंधित विधियों में से कुछ के लिए एक रैपर है। (लाइसेंस) । उदाहरण के लिए, Calendar2.parseToEpochSeconds ( सोर्सटाइम, तारीख टाइमफॉर्मैट ) स्रोत को पार करेगा डेटटाइमफॉर्मैट स्ट्रिंग के माध्यम से टाइम स्ट्रिंग और एक वापस लौटें"seconds since 1970-01-01T00:00:00Z" (EepochSeconds) डबल मान।
  • गणित, जो लगभग सभी स्थैतिक, गणित से संबंधित विधियों के लिए एक रैपर हैjava.lang. गणित। उदाहरण के लिए, Math.atan2 ( y, x ) आयताकार निर्देशांक में लेता है (y, x) और रिटर्न ध्रुवीय निर्देशांक (डबल्स की एक सरणी के साथ\[r, theta\]) ।
  • गणित2, जो com.cohort.util में लगभग सभी स्थैतिक, गणित से संबंधित विधियों के लिए एक रैपर है। गणित2 (लाइसेंस) । उदाहरण के लिए, Math2.roundTo ( D, nPlaces ) दशमलव बिंदु के दाईं ओर अंकों की निर्दिष्ट संख्या को राउंड डी होगा।
  • स्ट्रिंग, जो आपको सभी स्थैतिक, स्ट्रिंग से संबंधित विधियों तक पहुंच प्रदान करता हैjava.lang. स्ट्रिंग। स्ट्रिंग ऑब्जेक्टERDDAP™अभिव्यक्ति और स्क्रिप्ट उनके संबद्ध में से किसी का उपयोग कर सकते हैंJavaविधियाँ, जैसा कि जावा.लैंग में वर्णित है। स्ट्रिंग प्रलेखन। उदाहरण के लिए, स्ट्रिंग.valueOf (D) डबल मान को एक स्ट्रिंग में बदल देगा (हालांकि आप "+d" का भी उपयोग कर सकते हैं) ।
  • स्ट्रिंग2, जो कॉम.cohort.util.String2 में स्थिर, स्ट्रिंग और सरणी से संबंधित विधियों में से अधिकांश के लिए एक रैपर है। (लाइसेंस) । उदाहरण के लिए, स्ट्रिंग2.zeroPad ( संख्या, nDigits ) संख्या स्ट्रिंग के बाईं ओर 0's जोड़ देगा ताकि अंकों की कुल संख्या nDigit है (उदाहरण के लिए, स्ट्रिंग2.zeroPad ("6", 2) "06" लौटेगा) ।
  • पंक्ति, जिसमें स्रोत डेटा तालिका की वर्तमान पंक्ति में विभिन्न स्तंभों से डेटा तक पहुंचने के लिए गैर-स्थिर तरीके हैं। उदाहरण के लिए, row.columnString ("वर्ष") एक स्ट्रिंग के रूप में "वर्ष" कॉलम से मूल्य पढ़ता है, जबकि, row.column Int ("वर्ष") एक पूर्णांक के रूप में "वर्ष" कॉलम से मूल्य पढ़ता है।

सुरक्षा कारणों के लिए, अभिव्यक्ति और स्क्रिप्ट उन 6 के अलावा अन्य वर्गों का उपयोग नहीं कर सकते हैं।ERDDAP™डिफ़ॉल्ट ब्लैकलिस्ट बनाकर इस सीमा को लागू करता है (जो सभी कक्षाओं को ब्लैकलिस्ट करता है) और फिर एक श्वेतसूची (जो विशेष रूप से ऊपर वर्णित 6 कक्षाओं की अनुमति देता है) । यदि आपको अन्य तरीकों और/या अन्य वर्गों की आवश्यकता है तो कृपया अपने अनुरोधों को क्रिस पर ईमेल करें। जॉन at noaa.gov.

दक्षता

EDDTableFromFiles डेटासेट के लिए, केवल बहुत कम है (शायद ध्यान नहीं देना) इन चरों से डेटा के अनुरोध के लिए मंदी। EDDTableFromDatabase के लिए, उन अनुरोधों के लिए भारी गति का जुर्माना है जिनमें इन चरों पर बाधाएं शामिल हैं (उदाहरण के लिए, (&longitude0360> 30&longitude0360)<40) क्योंकि बाधाओं को डेटाबेस के माध्यम से पारित नहीं किया जा सकता है, इसलिए डेटाबेस को अधिक डेटा वापस करना पड़ता है।ERDDAP™ (जो बहुत समय लगता है) इतनाERDDAP™नए चर बना सकते हैं और बाधा लागू कर सकते हैं। सबसे खराब मामले से बचने के लिए (जहां डेटाबेस में कोई बाधा नहीं होती है) ,ERDDAP™एक त्रुटि संदेश फेंकता है ताकि डेटाबेस को टेबल की पूरी सामग्री वापस नहीं करना पड़े। (यदि आप इसे बायपास करना चाहते हैं, तो एक गैर-script कॉलम में एक बाधा जोड़ें जो हमेशा सच होगा, उदाहरण के लिए, और समय<3000-01-01 इस कारण से, EDDTableFromDatabase के साथ, उपयोग के बजाय डेटाबेस में एक व्युत्पन्न कॉलम बनाने के लिए शायद बेहतर होता है।sourceName=script inERDDAP।

कैसे एक अभिव्यक्ति का अवलोकन (या स्क्रिप्ट) प्रयोग किया जाता है:

सारणीबद्ध डेटा के लिए उपयोगकर्ता के अनुरोध के जवाब में,ERDDAP™स्रोत फ़ाइलों की एक श्रृंखला से डेटा प्राप्त होता है। प्रत्येक स्रोत फ़ाइल कच्चे की एक तालिका उत्पन्न करेगा (स्रोत से सीधे) डेटाERDDAP™फिर कच्चे डेटा की तालिका के माध्यम से जाना होगा, पंक्ति द्वारा पंक्ति और प्रत्येक पंक्ति के लिए एक बार अभिव्यक्ति या स्क्रिप्ट का मूल्यांकन करना, ताकि एक नया स्तंभ बनाया जा सके जिसमें उस अभिव्यक्ति या स्क्रिप्ट को एक नया स्तंभ के रूप में बनाया जा सके।sourceName।

जनरेट DatasetXml

ध्यान दें कि GenerateDatasets Xml पूरी तरह से अनजान है जब एक चर बनाने की आवश्यकता होती है<sourceName>= अभिव्यक्ति </sourceName> आप में चर बनाने के लिए हैdatasets.xmlहाथ से।

अभिव्यक्ति उदाहरण:

यहां डेटा चर के कुछ पूर्ण उदाहरण हैं जो डेटा के एक नए कॉलम बनाने के लिए एक अभिव्यक्ति का उपयोग करते हैं। हम उम्मीद करते हैं कि ये उदाहरण (और उनके रूपों) सभी अभिव्यक्ति-व्युत्पन्न के उपयोग के बारे में 95% कवर करेगाsourceNameS.

अलग-अलग "डेट" और संयोजन"time"एक एकीकृत समय स्तंभ में स्तंभ:
    <dataVariable>
<sourceName>=Calendar2.parseToEpochSeconds(row.columnString("date") + "T" +
row.columnString("time") + "Z", "yyyy-MM-dd'T'HH:mm:ss'Z'")</sourceName>
<destinationName>time</destinationName>
<dataType>double</dataType>
<addAttributes>
<att name="units">seconds since 1970-01-01</att>
</addAttributes>
</dataVariable>

किsourceNameअभिव्यक्ति एक नया बनाता है"time""date" से स्ट्रिंग मूल्यों को जोड़कर स्तंभ (yyyy-MM-dd) और"time" (HH:mm:s) स्रोत फ़ाइल की प्रत्येक पंक्ति पर कॉलम, और उस स्ट्रिंग को एक में बदलकर"seconds since 1970-01-01" (EepochSeconds) डबल मान।

या निश्चित रूप से, आपको प्रत्येक डेटासेट के स्रोत दिनांक और समय कॉलम में विशिष्ट प्रारूप से निपटने के लिए समय प्रारूप स्ट्रिंग को अनुकूलित करना होगा, देखें समय इकाइयों प्रलेखन

तकनीकी रूप से, आपको उपयोग करने की आवश्यकता नहीं है Calendar2.parseToEpochSeconds () संयुक्त तारीख + समय को epochSeconds में परिवर्तित करने के लिए। आप सिर्फ तारीख + समय स्ट्रिंग को पास कर सकते हैंERDDAP™और प्रारूप निर्दिष्ट (उदाहरण के लिए,) yyyy-MM-dd'T'H:mm:s'Z') इकाइयों विशेषता के माध्यम से। लेकिन epochSeconds में परिवर्तित करने के लिए महत्वपूर्ण फायदे हैं - विशेष रूप से, EDDTableFromFiles तब आसानी से प्रत्येक फ़ाइल में समय मानों की सीमा को ट्रैक रख सकते हैं और इसलिए जल्दी से यह तय कर सकते हैं कि किसी अनुरोध के जवाब में दिए गए फ़ाइल को देखने के लिए कि क्या समय की कमी है।

संबंधित समस्या अलग साल, महीने, तारीख, घंटे, मिनट, दूसरे के साथ एक स्रोत से एक एकीकृत तारीख + समय स्तंभ बनाने की आवश्यकता है। समाधान बहुत समान है, लेकिन आपको अक्सर कई क्षेत्रों में शून्य-पैड की आवश्यकता होगी, ताकि उदाहरण के लिए, महीने (1 - 12) तारीख (1 - 31) हमेशा 2 अंक होते हैं। यहाँ साल, महीने, तारीख के साथ एक उदाहरण है:

    <sourceName>=Calendar2.parseToEpochSeconds(row.columnString("year") + 
String2.zeroPad(row.columnString("month"), 2) +
String2.zeroPad(row.columnString("date"), 2), "yyyyMMdd")</sourceName>

संबंधित समस्या यह है कि स्रोत तालिका की अलग-अलग डिग्री, मिनट और सेकंड कॉलम में डेटा को जोड़कर एक एकीकृत अक्षांश या देशांतर स्तंभ बनाने की आवश्यकता है, प्रत्येक को पूर्णांक के रूप में संग्रहीत किया जाता है। उदाहरण के लिए,

    <sourceName>=row.columnInt("deg") + row.columnInt("min")/60.0 + 
row.columnInt("sec")/3660.0</sourceName>
0-60 ° से - 180 ° - 180 ° से - 180 ° के मूल्यों के साथ "लंबाई" नामक स्तंभ में लम्बाई मान के साथ एक स्तंभ को परिवर्तित करना
    <dataVariable>
<sourceName>=Math2.anglePM180(row.columnDouble("lon"))</sourceName>
<destinationName>longitude</destinationName>
<dataType>double</dataType>
<addAttributes>
<att name="units">degrees\\_east</att>
</addAttributes>
</dataVariable>

किsourceNameअभिव्यक्ति स्रोत फ़ाइल की प्रत्येक पंक्ति पर "लोन" कॉलम से डबल वैल्यू को परिवर्तित करके एक नया "लंबाई" कॉलम बनाता है (संभवतः 0 - 360 मानों के साथ) , और यह है कि एक -180 से 180 डबल मान में परिवर्तित करके।

यदि आप इसके बजाय -180 के स्रोत देशांतर मान को परिवर्तित करना चाहते हैं - 180 ° 0 - 360 °, उपयोग

    <sourceName>=Math2.angle0360(row.columnDouble("lon"))</sourceName>

दो अक्षांश चर नाम: यदि डेटासेट में 2 देशांतर चर होंगे, तो हम अनुशंसा करते हैं कि उपयोग करनाdestinationName-180 - 180 डिग्री चर औरdestinationName= देशांतर0360 (और LongName = \"लंबाई 0-360°") 0-60 ° चर के लिए। यह महत्वपूर्ण है क्योंकि उपयोगकर्ता कभी-कभी एक विशिष्ट लम्बाई सीमा के भीतर डेटा की खोज के लिए एडवांस्ड सर्च का उपयोग करते हैं। यदि लंबे समय तक लगातार -180 - सभी डेटासेट के लिए 180 डिग्री मान होते हैं तो यह खोज बेहतर काम करेगी। इसके अलावा, डेटासेट के भू-स्थानिक \_lon\_min, भू-स्थानिक \lon\_max, Westernmost \_Easting और Eastmost \_Eastings वैश्विक विशेषताओं को तब एक सुसंगत तरीके से सेट किया जाएगा (लम्बाई मान -180 से 180 डिग्री) ;

डिग्री \_ में तापमान मान के साथ "टेम्प्फ़" नामक स्तंभ को परिवर्तित करना F में एक कॉलम जिसका नाम "टेम्पसी" है, जिसमें डिग्री \_ C:
    <dataVariable>
<sourceName>=(row.columnFloat("tempF")-32)\\*5/9</sourceName>
<destinationName>tempC</destinationName>
<dataType>float</dataType>
<addAttributes>
<att name="units">degrees\\_C</att>
</addAttributes>
</dataVariable>

किsourceNameअभिव्यक्ति फ्लोट डिग्री को परिवर्तित करके एक नया "टेम्पसी" कॉलम बनाती है स्रोत फ़ाइल की प्रत्येक पंक्ति पर फ्लोट डिग्री \_ में "टेम्प्फ़" कॉलम से F मान C मान

ध्यान दें कि आपके डेटासेट में मूल अस्थायी दोनों हो सकते हैं F चर और नया अस्थायी C चर द्वारा एक अन्य चर के साथ

    <sourceName>tempF</sourceName>
पवन "गति" और "दिशा" स्तंभों को यू, वी घटकों के साथ दो स्तंभों में परिवर्तित करना
  • यू चर बनाने के लिए, उपयोग करें
    <sourceName>=row.columnFloat("speed") \\* Math.cos(row.columnFloat("direction"))</sourceName>
  • एक वी चर बनाने के लिए, उपयोग करें
    <sourceName>=row.columnFloat("speed") \\* Math.sin(row.columnFloat("direction"))</sourceName>

या, यू, वी:

  • एक गति चर बनाने के लिए, उपयोग करें
    <sourceName>=Math.atan2(row.columnDouble("v"), row.columnDouble("u"))\\[0\\]</sourceName>
  • एक दिशा चर बनाने के लिए, उपयोग करें
    <sourceName>=Math.toDegrees(Math.atan2(row.columnDouble("v"), row.columnDouble("u"))\\[1\\])</sourceName>
स्क्रिप्ट उदाहरण:

यहां एक स्क्रिप्ट का उपयोग करने का एक उदाहरण है, न केवल एक अभिव्यक्ति, एक के रूप मेंsourceName। हम उम्मीद करते हैं कि अभिव्यक्ति के विपरीत स्क्रिप्ट अक्सर आवश्यक नहीं होगी। इस मामले में लक्ष्य एक गैर-NaN लापता मूल्य वापस करने के लिए है (-99) किसी विशिष्ट श्रेणी के बाहर तापमान मूल्यों के लिए। ध्यान दें कि स्क्रिप्ट "" के बाद हिस्सा है।

    <dataVariable>
<sourceName>=var tc=row.columnFloat("tempC"); return tc&gt;35 || tc&lt;-5? -99.0f : tc\\*9/5+32;</sourceName>
<destinationName>tempF</destinationName>
<dataType>float</dataType>
<addAttributes>
<att name="units">degrees\\_F</att>
</addAttributes>
</dataVariable>
हार्ड फ्लैग

यदि आप अभिव्यक्ति या स्क्रिप्ट को एक में परिभाषित करते हैंsourceName, आपको एक सेट करना होगाकठोर झंडाइसलिए डेटासेट के लिएERDDAP™डेटासेट के लिए सभी कैश्ड जानकारी को हटा देता है और प्रत्येक डेटा फ़ाइल को फिर से पढ़ता है (नई अभिव्यक्ति या स्क्रिप्ट का उपयोग करना) अगली बार यह डेटासेट लोड करता है। वैकल्पिक रूप से, आप उपयोग कर सकते हैंदासजो एक हार्ड फ्लैग सेट करने के बराबर है।

Percent Encode

यह केवल शायद ही कभी प्रासंगिक है: क्योंकि अभिव्यक्ति और स्क्रिप्ट में लिखे गए हैंdatasets.xml, जो एक XML दस्तावेज़ है, आपको किसी भी कोड को प्रतिशत करना होगा<अभिव्यक्तियों और लिपियों में \> और वर्ण<, > और & .

सामान्य समस्याएं

एक आम समस्या यह है कि आप के साथ एक चर बनानेsourceName= अभिव्यक्ति लेकिन डेटा का परिणामी स्तंभ सिर्फ लापता मान है। वैकल्पिक रूप से, नए स्तंभ की कुछ पंक्तियों में लापता मान होते हैं और आपको लगता है कि उन्हें नहीं करना चाहिए। अंतर्निहित समस्या यह है कि अभिव्यक्ति के साथ कुछ गलत है औरERDDAPउस त्रुटि को एक लापता मान में बदल रहा है। समस्या को हल करने के लिए,

  • यह देखने के लिए अभिव्यक्ति को देखें कि समस्या क्या हो सकती है।
  • देखोलॉग-इन, जो प्रत्येक नए स्तंभ के निर्माण के दौरान उत्पन्न पहली त्रुटि संदेश दिखाएगा।

सामान्य कारण हैं:

  • आपने गलत मामले का इस्तेमाल किया। अभिव्यक्ति और स्क्रिप्ट मामले संवेदनशील हैं।
  • आपने कक्षा का नाम छोड़ दिया। उदाहरण के लिए, आपको Math.abs का उपयोग करना होगा। () नहीं () ।
  • आपने रूपांतरण नहीं किया था। उदाहरण के लिए, यदि एक पैरामीटर मान का डेटा प्रकार स्ट्रिंग है और आपके पास एक दोहरा मान है, तो आपको एक डबल को ""+d के माध्यम से स्ट्रिंग में बदलने की आवश्यकता है।
  • अभिव्यक्ति में कॉलम का नाम वास्तव में फ़ाइल में कॉलम नाम से मेल नहीं खाता है (या नाम कुछ फ़ाइलों में अलग हो सकता है) ।
  • अभिव्यक्ति में एक वाक्यविन्यास त्रुटि है (उदाहरण के लिए, एक लापता या अतिरिक्त ') ').

यदि आप अटक जाते हैं या मदद की आवश्यकता होती है, तो क्या आप अटक जाते हैं? कृपया विवरण शामिल करें और हमारे देखेंअतिरिक्त समर्थन प्राप्त करने पर अनुभाग

<destinationName& gt;
  • [<destinationName> (#Destinationname) - उस चर के लिए नाम जिसे दिखाया जाएगा और उसके द्वारा इस्तेमाल किया जाएगाERDDAP™उपयोगकर्ता
    • यह वैकल्पिक है। यदि अनुपस्थित हो तो,sourceNameप्रयोग किया जाता है।
    • यह उपयोगी है क्योंकि यह आपको एक क्रिप्टिक या अजीब बदलने की अनुमति देता हैsourceName।
    • destinationNameमामला संवेदनशील है।
    • destinationNameTo start with a letter. (A-Z, a-z) और MUST 0 या अधिक अक्षरों का पालन किया जा सकता है (A-Z, a-z, 0-9, and \_) । (पहले '-' की अनुमति दी गई थीERDDAP™संस्करण 1.10.) यह प्रतिबंध डेटा परिवर्तनीय नामों को समान होने की अनुमति देता हैERDDAP™, प्रतिक्रिया फ़ाइलों में, और सभी सॉफ्टवेयर में जहां उन फ़ाइलों का उपयोग किया जाएगा, प्रोग्रामिंग भाषाओं सहित (लाइकPython,Matlab, औरJavaस्क्रिप्ट) जहां चर नामों पर समान प्रतिबंध हैं।
    • EDDTable Datasets में,अक्षांश, ऊंचाई (या गहराई) समयडेटा चर विशेष हैं।  
<डेटा प्रकार>
  • [<Datatype> (#datatype) -- स्रोत से आने वाले डेटा प्रकार को निर्दिष्ट करता है। (कुछ मामलों में, उदाहरण के लिए, जब ASCII फ़ाइलों से डेटा पढ़ने के लिए, यह निर्दिष्ट करता है कि स्रोत से आने वाले डेटा को कैसे संग्रहीत किया जाना चाहिए।)
    • यह कुछ डेटासेट प्रकारों द्वारा आवश्यक है और दूसरों द्वारा IGNORED। डेटासेट प्रकार जिन्हें उनके लिए इसकी आवश्यकता होती हैdataVariableएस हैं:EDDGridfromXxxFiles, EDDTableFromXxxFiles, EDDTableFromMWFS, EDDTableFromNOS, EDDTableFromSOS। अन्य डेटासेट प्रकार इस टैग को अनदेखा करते हैं क्योंकि उन्हें स्रोत से जानकारी मिलती है।  
    • मान्य मान मानक में से कोई हैंERDDAP™डेटा प्रकारप्लस बोरान (नीचे देखें) । डेटाटाइप नाम केस-संवेदनशील होते हैं।  
बोरान डेटा
  • "बोला"एक विशेष मामला है।
    • आंतरिक रूप सेERDDAP™एक boolean प्रकार का समर्थन नहीं करता क्योंकि booleans लापता मूल्यों को स्टोर नहीं कर सकते हैं और अधिकांश फ़ाइल प्रकार booleans का समर्थन नहीं करते हैं। इसके अलावा,DAPबोओलान का समर्थन नहीं करता है, इसलिए बोओलान चर को क्वेरी करने का कोई मानक तरीका नहीं होगा।
    • डेटा के लिए "boolean" निर्दिष्ट करना में टाइपdatasets.xmlबोओलेन मूल्यों को संग्रहित करने और बाइट्स के रूप में प्रतिनिधित्व करने का कारण होगा: 0=false, 1=true, 127=missing\_value।
    • उपयोगकर्ता संख्यात्मक मूल्यों का उपयोग करके बाधाओं को निर्दिष्ट कर सकते हैं (उदाहरण के लिए, "isAlive = 1") ।
    • ERDDAP™प्रशासकों को कभी-कभी "boolean" डेटा का उपयोग करने की आवश्यकता होती है में टाइपdatasets.xmlबताने के लिएERDDAP™डेटा स्रोत के साथ बातचीत कैसे करें (उदाहरण के लिए, एक रिलेशनल डेटाबेस से बोलान मूल्यों को पढ़ने और उन्हें 0, 1, या 127 में परिवर्तित करने के लिए।) ।  
  • यदि आप स्रोत फ़ाइलों में डेटाटाइप से डेटा चर को बदलना चाहते हैं (उदाहरण के लिए, लघु) कुछ अन्य डेटा में डेटासेट में टाइप करें (उदाहरण के लिए, int) नहीं<आप क्या चाहते हैं निर्दिष्ट करने के लिए datatype>। (यह कुछ प्रकार के डेटासेट के लिए काम करता है, लेकिन अन्य नहीं।) इसके बजाय:
    • उपयोग<datatype> को निर्दिष्ट करने के लिए क्या फ़ाइलों में है (उदाहरण के लिए, लघु) ।
    • में<addAttributes> चर के लिए, एक जोड़ेंscale\_factorनए डेटा के साथ विशेषता प्रकार (उदाहरण के लिए, int) उदाहरण के लिए, 1 का मान,
            <att name="scale\\_factor" type="int">1</att>  
dataVariable <addAttributes>
  • [<addAttributes> (#variable-addattributes) - विशेषताओं के एक सेट को परिभाषित करता है ( नाम = मूल्य ) जो एक चर के लिए स्रोत की विशेषताओं में जोड़ा जाता है, ताकि एक चर के लिए संयुक्त गुण बनाया जा सके। यह वैकल्पिक है। यदि परिवर्तनशीलस्रोतAttributesया<addAttributes> शामिलscale\_factorऔर/oradd\_offsetविशेषताएँ, उनके मूल्यों का उपयोग क्लाइंट को वितरण से पहले स्रोत से डेटा को अनपैक करने के लिए किया जाएगा। अनपैक्ड वेरिएबल समान डेटा प्रकार का होगा (उदाहरण के लिए, फ्लोट) जैसाscale\_factorऔरadd\_offsetमान
चर<addAttributes>
  • [ ** परिवर्तनीय विशेषता / चर<addAttributes> ** ] (#variable-addattributes) --<addAttributes> एक के भीतर एक वैकल्पिक टैग है<axisVariable><dataVariable> टैग जिसका उपयोग चर की विशेषताओं को बदलने के लिए किया जाता है।

    • ** एक चर का उपयोग करें<addAttributes> परिवर्तनीय विशेषताओं को बदलने के लिए। ** ERDDAP™डेटासेट के स्रोत से एक चर की विशेषताओं को जोड़ती है ()** स्रोतAttributes ) और चर addAttributes जिसे आप परिभाषित करते हैंdatasets.xml (जो प्राथमिकता है) चर बनाने के लिए " संयुक्त एथलीट ** क्या हैERDDAP™उपयोगकर्ता देखते हैं। इस प्रकार, आप उपयोग कर सकते हैंaddAttributesSourceAttributes के मूल्यों को फिर से परिभाषित करने के लिए, नई विशेषताओं को जोड़ें, या विशेषताओं को हटा दें।

    • [] ** <addAttributes> सूचना (#addattributs) जो वैश्विक और परिवर्तनीय पर लागू होता है <addAttributes> ** ।

    • ERDDAP™विभिन्न तरीकों से इन विशेषताओं में से कई का उपयोग करता है। उदाहरण के लिए, colorBar मूल्यों के माध्यम से उपलब्ध एक चर बनाने के लिए आवश्यक हैंWMS, ताकि मैप्स को सुसंगत रंगबारों के साथ बनाया जा सके।

    • देशांतर, अक्षांश, ऊंचाई (या गहराई) , और समय चरस्वचालित रूप से बहुत सारे उपयुक्त मेटाडाटा प्राप्त करें (उदाहरण के लिए,यूनिट) ।

    • एक नमूना<addAttributes> डेटा चर के लिए है:

        <addAttributes>
              <att name="actual\_range" type="doubleList">10.34 23.91</att>
              <att name="colorBarMinimum" type="double">0</att>
              <att name="colorBarMaximum" type="double">32</att>
              <att name="ioos\_category">Temperature</att>
              <att name="long\_name">Sea Surface Temperature</att>
              <att name="numberOfObservations" />
              <att name="units">degree\_C</att>
        </addAttributes>

खाली संख्या अवलोकन विशेषता स्रोत संख्या अवलोकन विशेषता का कारण बनता है (यदि कोई हो) अंतिम, विशेषताओं की संयुक्त सूची से हटाया जाना चाहिए।

  • इस जानकारी की आपूर्ति करने में मदद करता हैERDDAP™बेहतर काम करते हैं और उपयोगकर्ता डेटासेट को समझने में मदद करते हैं। अच्छा मेटाडाटा एक डाटासेट प्रयोग करने योग्य बनाता है। अपर्याप्त मेटाडाटा एक डेटासेट बेकार बनाता है। कृपया मेटाडाटा विशेषताओं के साथ अच्छा काम करने का समय लें।
उन चर विशेषताओं के बारे में टिप्पणियां जो विशेष हैंERDDAP:
actual\_range
  • actual\_range एक Recommended चर विशेषता है। उदाहरण के लिए,

<att name="actual\_range" type="floatList"\>0.17 23.58</att>

  • यह विशेषता से हैसीडीसीCOARDSऔरCF 1.7+मेटाडाटा मानकों।
  • यदि वर्तमान में, यह एक ही डेटा प्रकार के दो मानों की एक सरणी है जो परिवर्तनीय के गंतव्य डेटा प्रकार के रूप में है, तो वास्तविक निर्दिष्ट करना (सैद्धांतिक या अनुमत नहीं) उस चर के लिए डेटा के न्यूनतम और अधिकतम मान।
  • यदि डेटा के साथ पैक किया जाता हैscale\_factorऔर/oradd\_offset,actual\_rangeइसमें अनपैक्ड मान होना चाहिए और एक ही डेटा प्रकार का अनपैक्ड मान होना चाहिए।
  • कुछ डेटा स्रोतों के लिए (उदाहरण के लिए, सभी EDDTableFrom ... फ़ाइलें) ,ERDDAP™निर्धारित करता हैactual\_rangeप्रत्येक चर की और सेटactual\_rangeविशेषता। अन्य डेटा स्रोतों के साथ (उदाहरण के लिए, संबंधिक डेटाबेस, Cassandra,DAPप्रतिHyrax) , यह सीमा की गणना करने के लिए स्रोत के लिए परेशानी या बोझिल हो सकता है, इसलिएERDDAP™यह अनुरोध नहीं करता है। इस मामले में, यदि आप सेट कर सकते हैं तो यह सबसे अच्छा हैactual\_range (विशेष रूप से देशांतर, अक्षांश, ऊंचाई, गहराई और समय चर के लिए) जोड़करactual\_rangeप्रत्येक चर के लिए विशेषता [<addAttributes> (#addattributs) इस डेटासेट के लिएdatasets.xmlउदाहरण के लिए,

<att name="actual\_range" type="doubleList"\>-180 180</att>

  • संख्यात्मक के लिएसमय और समय-समय परिवर्तनशीलनिर्दिष्ट मूल्य प्रासंगिक स्रोत होना चाहिए (गंतव्य नहीं) संख्यात्मक मान। उदाहरण के लिए, यदि स्रोत समय मान को 1985-01-01 के बाद से "दिन" के रूप में संग्रहीत किया जाता है, तो उसके बाद स्रोत समय मान को " 1985-01-01-01-01 के बाद से दिन" के रूप में संग्रहीत किया जाता है।actual\_range1985-01-01 के बाद से "दिन" में निर्दिष्ट होना चाहिए। यदि आप अभी तक निकट-वास्तविक समय के डेटा के लिए दूसरे मूल्य के रूप में जाना चाहते हैं, तो आपको NAN का उपयोग करना चाहिए। उदाहरण के लिए, 1985-01-17 की डेटा रेंज को अब तक निर्दिष्ट करने के लिए, उपयोग करें

<att name="actual\_range" type="doubleList"\>16 NaN</att>

  • अगरactual\_rangeज्ञात हैERDDAP™इसे कैलकुलेट करके या आप इसे जोड़ने के माध्यम से<addAttributes>ERDDAP™डेटा एक्सेस फॉर्म पर उपयोगकर्ता को प्रदर्शित करेगा ( datasetID एचटीएमएल) और बनाना A Graph वेब पृष्ठों ( datasetID ग्राफ़) उस डेटासेट के लिए और एफजीडीसी और आईएसओ 19115 मेटाडाटा उत्पन्न करते समय इसका उपयोग करें। इसके अलावा, पिछले 7 दिनों के समयactual\_rangeडिफ़ॉल्ट समय सबसेट के रूप में उपयोग किया जाता है।
  • अगरactual\_rangeज्ञात है, उपयोगकर्ता उपयोग कर सकते हैंमिनट () अधिकतम () कार्यअक्सर बहुत उपयोगी होता है।
  • सभी EDDTable के लिए... डेटासेट, अगरactual\_rangeज्ञात है (आपके द्वारा निर्दिष्ट या इसके द्वाराERDDAP™इसे गणना करना) ,ERDDAP™उस रेंज के बाहर डेटा के लिए किसी भी अनुरोध को तुरंत अस्वीकार करने में सक्षम होगा। उदाहरण के लिए, यदि डेटासेट का न्यूनतम समय मान 1985-01-17 से मेल खाता है, तो 1985-01-01 से 1985-01-16 तक सभी डेटा के लिए एक अनुरोध तुरंत त्रुटि संदेश के साथ खारिज कर दिया जाएगा "आपका क्वेरी ने कोई मिलान परिणाम उत्पन्न नहीं किया। यह बनाता हैactual\_rangeमेटाडाटा का एक बहुत ही महत्वपूर्ण टुकड़ा, क्योंकि यह बचा सकता हैERDDAP™बहुत सारे प्रयास और उपयोगकर्ता को बहुत समय बचाने के लिए। और यह हाइलाइट्स किactual\_rangeमान डेटा की वास्तविक सीमा से अधिक संकीर्ण नहीं होना चाहिए; अन्यथा,ERDDAP™हमेशा कह सकते हैं जब वास्तव में प्रासंगिक डेटा होता है तो "कोई मिलान डेटा नहीं है"।
  • जब कोई उपयोगकर्ता डेटा की एक सबसेट का चयन करता है और एक फ़ाइल प्रकार का अनुरोध करता है जिसमें मेटाडाटा शामिल है (उदाहरण के लिए,.nc) ,ERDDAP™संशोधित करनाactual\_rangeप्रतिक्रिया फ़ाइल में सबसेट की सीमा को प्रतिबिंबित करने के लिए।
  • भी देखेंdata\_minऔरdata\_max, जो निर्दिष्ट करने का एक वैकल्पिक तरीका हैactual\_range। हालांकि, अब इनकी व्याख्या की जाती है किactual\_rangeCF 1.7+ द्वारा परिभाषित किया गया है।  
कलर बार एट्रिब्यूट्स

कई वैकल्पिक चर गुण हैं जो एक रंग बार के लिए सुझाए गए डिफ़ॉल्ट विशेषताओं को निर्दिष्ट करते हैं (छवियों पर रंगों में डेटा मूल्यों को परिवर्तित करने के लिए उपयोग किया जाता है) इस चर के लिए।

  • यदि वर्तमान में, इस जानकारी का उपयोग ग्रिडडैप द्वारा डिफ़ॉल्ट जानकारी के रूप में किया जाता है औरtabledapजब भी आप एक छवि का अनुरोध करते हैं जो रंग बार का उपयोग करता है।

  • उदाहरण के लिए, जब अक्षांश-लंबाई ग्रिड डेटा को मानचित्र पर कवरेज के रूप में प्लॉट किया जाता है, तो रंग बार निर्दिष्ट करता है कि डेटा मूल्यों को रंगों में कैसे परिवर्तित किया जाता है।

  • इन मूल्यों की अनुमतिERDDAP™छवियों को बनाने के लिए जो विभिन्न अनुरोधों में एक सुसंगत रंग बार का उपयोग करते हैं, यहां तक कि जब समय या अन्य आयाम मान भिन्न होते हैं।

  • इन विशेषताओं में उपयोग के लिए बनाया गया थाERDDAP। वे मेटाडाटा मानक से नहीं हैं।

  • रंग बार से संबंधित विशेषताएं हैं:

    • colorBarMinimum कलरबार पर न्यूनतम मान निर्दिष्ट करता है। उदाहरण के लिए,

    <att name="colorBarMinimum" type="double"\>-5</att>

    • यदि डेटा के साथ पैक किया जाता हैscale\_factorऔर/oradd\_offset, निर्दिष्ट करेंcolorBarMinimumएक अनपैक मूल्य के रूप में।
    • से कम डेटा मानcolorBarMinimumउसी रंग के अनुसार प्रतिनिधित्व किया जाता हैcolorBarMinimumमान
    • विशेषता होना चाहिएप्रकार="डबल", डेटा चर के प्रकार की परवाह किए बिना।
    • मूल्य आमतौर पर एक अच्छा राउंड नंबर होता है।
    • सर्वश्रेष्ठ अभ्यास: हम न्यूनतम डेटा मान से थोड़ा अधिक मूल्य की सिफारिश करते हैं।
    • कोई डिफ़ॉल्ट मान नहीं है।
  • colorBarMaximum कलरबार पर अधिकतम मान निर्दिष्ट करता है। उदाहरण के लिए,

<att name="colorBarMaximum" type="double"\>5</att>

  • यदि डेटा के साथ पैक किया जाता हैscale\_factorऔर/oradd\_offset, निर्दिष्ट करेंcolorBarMinimumएक अनपैक मूल्य के रूप में।
  • डेटा मान तुलना में अधिकcolorBarMaximumउसी रंग के अनुसार प्रतिनिधित्व किया जाता हैcolorBarMaximumमान
  • विशेषता होना चाहिएप्रकार="डबल", डेटा चर के प्रकार की परवाह किए बिना।
  • मूल्य आमतौर पर एक अच्छा राउंड नंबर होता है।
  • सर्वश्रेष्ठ अभ्यास: हम अधिकतम डेटा मान से थोड़ा कम मूल्य की सिफारिश करते हैं।
  • कोई डिफ़ॉल्ट मान नहीं है।
  • रंग बारपैलेट रंगबार के लिए पैलेट निर्दिष्ट करता है। उदाहरण के लिए,
        <att name="colorBarPalette">WhiteRedBlack</att>
  • सबERDDAP™स्थापना इन मानक पैलेटों का समर्थन करती है: BlackBlueWhite, BlackRedWhite, BlackWhite, BlueWhiteRed, LightRainbow, महासागर, OceanDepth, इंद्रधनुष, RedWhiteBlue, रिवर्सRainbow, स्थलाकृति, TopographyDepth\[v1.74 में जोड़ा गया\], व्हाइटब्लैक, व्हाइटब्लूब्लैक और व्हाइट रेडब्लैक।
  • यदि आपने स्थापित किया हैअतिरिक्त पैलेटआप उनमें से एक का उल्लेख कर सकते हैं।
  • यदि यह विशेषता मौजूद नहीं है, तो डिफ़ॉल्ट ब्लू व्हाईट रेड है यदि \-1\*colorBarMinimum=colorBarMaximumअन्यथा डिफ़ॉल्ट इंद्रधनुष है।
  • रंगबारस्केल रंगबार के लिए पैमाने निर्दिष्ट करता है। उदाहरण के लिए,
        <att name="colorBarScale">Log</att>
  • वैध मान रैखिक और लॉग हैं।
  • यदि मूल्य लॉग है,colorBarMinimum0 से अधिक होना चाहिए।
  • यदि यह विशेषता मौजूद नहीं है, तो डिफ़ॉल्ट रैखिक है।
  • रंग BarContinuous निर्दिष्ट करता है कि कलरबार में रंगों का निरंतर पैलेट है या क्या कलरबार में कुछ असतत रंग हैं। उदाहरण के लिए,
        <att name="colorBarContinuous">false</att>
  • वैध मान वास्तविक और झूठे तार हैं।
  • यदि यह विशेषता मौजूद नहीं है, तो डिफ़ॉल्ट सही है।
  • रंगबारनेक्शन रंगबार पर खंडों की डिफ़ॉल्ट संख्या निर्दिष्ट करता है। उदाहरण के लिए,
        <att name="colorBarNSections" type="int">6</att>
  • वैध मान सकारात्मक पूर्णांक हैं।
  • यदि यह विशेषता मौजूद नहीं है, तो डिफ़ॉल्ट \-1 है, जो बताता हैERDDAP™रंगबार की सीमा के आधार पर वर्गों की संख्या चुनने के लिए।
WMS

एक चर के लिए मुख्य आवश्यकताओं के माध्यम से सुलभ होनाERDDAP'WMSसर्वर हैं:

  • डेटासेट होना चाहिएEDDGrid... डेटासेट।
  • डेटा चर MUST एक ग्रिड चर हो सकता है।
  • डेटा चर MUST में देशांतर और अक्षांश अक्ष चर है। (अन्य अक्ष चर वैकल्पिक हैं।)
  • वहाँ -180 और 180 के बीच कुछ देशांतर मान हो सकता है।
  • The The most of thecolorBarMinimumऔरcolorBarMaximumगुण MUST निर्दिष्ट किया जाना चाहिए। (अन्य रंग बार गुण वैकल्पिक हैं।)
data\_minऔरdata\_max
  • data\_min और data\_max -- ये विश्व महासागर परिसंचरण प्रयोग में परिभाषित वैरिएबल विशेषताओं की व्याख्या कर रहे हैं (WOCE) मेटाडाटा विवरण। उदाहरण के लिए,

    <att name="data\_min" type="float"\>0.17</att>
    <att name="data\_max" type="float"\>23.58</att>

    • हम अनुशंसा करते हैं कि आप उपयोग करेंactual\_rangeइसके बजायdata\_minऔरdata\_maxक्योंकिactual\_rangeअब CF विनिर्देश द्वारा परिभाषित किया गया है।
    • यदि वर्तमान में, उन्हें वैरिएबल के गंतव्य डेटा प्रकार के समान डेटा टाइप होना चाहिए और वास्तविक निर्दिष्ट करना चाहिए (सैद्धांतिक या अनुमत नहीं) उस चर के लिए डेटा के न्यूनतम और अधिकतम मान।
    • यदि डेटा के साथ पैक किया जाता हैscale\_factorऔर/oradd\_offset,data\_minऔरdata\_maxअनपैक्ड डेटा प्रकार का उपयोग करके अनपैक्ड मान होना चाहिए।  
चरdrawLandMask
  • drawLandMask -- यह एक वैकल्पिक परिवर्तनीय विशेषता है जिसका उपयोग करके किया जाता हैERDDAP™ (कोई मेटाडाटा मानकों) जो डेटासेट के मेक ए ग्राफ फॉर्म पर "ड्रॉ लैंड मास्क" विकल्प के लिए डिफ़ॉल्ट मान निर्दिष्ट करता है ( datasetID ग्राफ़) और एक URL में &.land पैरामीटर के लिए डेटा के नक्शे का अनुरोध करता है। उदाहरण के लिए,
        <att name="drawLandMask">under</att>  

देखेंdrawLandMaskअवलोकन

एन्कोडिंग
  • हिन्दी
    • यह विशेषता केवल स्ट्रिंग चर के साथ इस्तेमाल किया जा सकता है।
    • इस विशेषता की दृढ़ता से अनुशंसा की जाती है।
    • यह विशेषता से हैNetCDFउपयोगकर्ता गाइड (एनयूजी)
    • आंतरिक रूप सेERDDAP™स्ट्रिंग 2-बाइट वर्णों का एक अनुक्रम है जो 2-बाइट वर्णों का उपयोग करते हैंयूनिकोड UCS-2 वर्ण सेट
    • कई फ़ाइल प्रकार केवल स्ट्रिंग्स में 1-बाइट वर्णों का समर्थन करते हैं और इस प्रकार इस विशेषता को एक संबद्ध की पहचान करने की आवश्यकता होती है। Charset (AKA code page) जो परिभाषित करता है कि कैसे 256 संभावित मूल्यों को UCS-2 चरित्र सेट और/या एन्कोडिंग सिस्टम से खींचे गए 256 वर्णों के एक सेट के लिए, उदाहरण के लिए,UTF-8 (जिसकी आवश्यकता 1 और 4 बाइट्स प्रति चरित्र के बीच है) ।
    • \_Encoding के लिए मान केस-असंवेदनशील हैं।
    • सिद्धांत में,ERDDAP™\_Encoding पहचानकर्ता का समर्थन कर सकता हैइस आईएएनए सूचीलेकिन व्यवहार में,ERDDAP™वर्तमान में सिर्फ समर्थन
      • ISO-8859-1 (ध्यान दें कि इसमें डैश है, अंडरस्कोर नहीं है) इसका लाभ यह है कि यह यूनिकोड के पहले 256 अक्षरों के समान है, और
      • UTF-8
    • जब स्रोत फ़ाइलों को पढ़ने के लिए, डिफ़ॉल्ट मान ISO-8859-1 है, Netcdf-4 फ़ाइलों को छोड़कर जहां डिफ़ॉल्ट UTF-8 है।
    • यह एक चल समस्याग्रस्त मुद्दा है क्योंकि कई स्रोत फाइलें charsets या encodings का उपयोग करती हैं जो ISO-8859-1 से अलग हैं, लेकिन charset या encoding की पहचान नहीं करते हैं। उदाहरण के लिए, कई स्रोत डेटा फ़ाइलों में Windows पर Microsoft Word से कॉपी और चिपकाए गए कुछ मेटाडाटा है और इस प्रकार ASCII hyphens और apostrophes के बजाय Windows-विशिष्ट charset से फैंसी hyphens और apostrophes हैं। इसके बाद ये वर्ण अजीब अक्षरों या '?' के रूप में दिखाई देते हैं?ERDDAP।  
फ़ाइल AccessBaseUrl
  • फ़ाइल AccessBaseUrlफ़ाइल शायद ही कभी उपयोग किए जाने वाले गुण हैं जो किसी भी मानक से नहीं हैं। यदि एक EDDTable कॉलम में वेब सुलभ फ़ाइलों के नाम हैं (उदाहरण के लिए, छवि, वीडियो, या ऑडियो फ़ाइलों) , आप जोड़ सकते हैं
    <att name="fileAccessBaseUrl">*someBaseURL*</a>  

आधार URL निर्दिष्ट करने के लिए (के साथ समाप्त /) फ़ाइल नाम को पूर्ण यूआरएल में बनाने की आवश्यकता है। असामान्य मामलों में, जैसे कि जब कॉलम में .png फ़ाइलों का संदर्भ होता है लेकिन मानों में ".png" की कमी होती है, तो आप जोड़ सकते हैं।

    <att name="fileAccessSuffix">*someSuffix*</a>  

(उदाहरण के लिए)<att name="fileAccessSuffix">.png</a> फ़ाइल नाम को पूर्ण यूआरएल में बनाने के लिए एक प्रत्यय को जोड़ने के लिए निर्दिष्ट करने के लिए। फिर.htmlTableजवाब,ERDDAP™पूर्ण यूआरएल के लिए एक लिंक के रूप में फ़ाइल नाम दिखाएंगे (आधार Url प्लस फाइल नाम प्लस प्रत्यय) ।

यदि आप चाहते हैंERDDAP™संबंधित फ़ाइलों की सेवा करने के लिए, एक अलग बनाएंEDDTableFromFileNamesउन फ़ाइलों के लिए डेटासेट (यह एक निजी डेटासेट हो सकता है) ।

फ़ाइल Url
  • फ़ाइल Url शायद ही कभी इस्तेमाल किया जाने वाला गुण है जो किसी भी मानक से नहीं है। यदि एक EDDTable कॉलम में वेब सुलभ फ़ाइलों के नाम हैं (उदाहरण के लिए, छवि, वीडियो, या ऑडियो फ़ाइलों) जो एक संग्रह के माध्यम से सुलभ हैं (उदाहरण के लिए.zipफ़ाइल) यूआरएल के माध्यम से सुलभ, उपयोग<att name="fileAccessArchiveUrl"> यूआरएल </att> संग्रह के लिए यूआरएल निर्दिष्ट करने के लिए।

यदि आप चाहते हैंERDDAP™संग्रह फ़ाइल की सेवा करने के लिए, एक अलग बनाएंEDDTableFromFileNamesउस फ़ाइल के लिए डेटासेट (यह एक निजी डेटासेट हो सकता है) ।

ioos\_category
  • ioos\_category -- यह एक नियमित परिवर्तनीय विशेषता है यदि<चर MustHaveIoosCategory> को सही करने के लिए सेट किया गया है (डिफ़ॉल्ट) मेंसाइटमैपअन्यथा, यह वैकल्पिक है। उदाहरण के लिए,<att nameioos\_category>सैलिनिटी</att> श्रेणियों से हैंNOAAएकीकृत महासागर अवलोकन प्रणाली (आईओएस)

    • (इसे लिखने के रूप में) हम इन नामों की औपचारिक परिभाषाओं के बारे में नहीं जानते हैं।
    • मुख्य नाम Zdenka Willis's.ppt "Integrated Ocean अवलोकन प्रणाली" से हैं (आईओएस) NOAAएक प्रारंभिक ऑपरेटिंग क्षमता के निर्माण के लिए दृष्टिकोणयूएस आईओएस ब्लूप्रिंट (पृष्ठ 1-5) ।
    • यह संभावना है कि इस सूची को भविष्य में संशोधित किया जाएगा। यदि आपके पास अनुरोध है, तो कृपया क्रिस को ईमेल करें। जॉन at noaa.gov.
    • ERDDAP™IOOS की तुलना में श्रेणियों की एक बड़ी सूची का समर्थन करता है क्योंकि बॉब सिमोन ने अतिरिक्त नाम जोड़े (ज्यादातर वैज्ञानिक क्षेत्रों के नामों पर आधारित, उदाहरण के लिए, जीवविज्ञान, पारिस्थितिकी, मौसम विज्ञान, सांख्यिकी, वर्गीकरण) अन्य प्रकार के डेटा के लिए।
    • वर्तमान में मान्य मानERDDAP™बाथीमेट्री, बायोलॉजी, बॉटम कैरेक्टर, CO2, रंगीन भंग कार्बनिक पदार्थ, दूषित पदार्थ, धाराएं, भंग पोषक तत्व, भंग O2, पारिस्थितिकी, मछली बहुतायत, मछली प्रजातियां, फ्लक्स, जल विज्ञान, बर्फ वितरण, पहचानकर्ता, स्थान, मौसम विज्ञान, महासागर रंग, ऑप्टिकल गुण, अन्य, रोगजनक, Phytoplankton प्रजातियां, दबाव, उत्पादकता, गुणवत्ता, लवणता, सागर स्तर, सांख्यिकी, स्ट्रीम प्रवाह, सतह लहरें, वर्गीकरण, समय, कुल निलंबित पदार्थ, अज्ञात, हवा, Zooplanktonies, Abundtons and Zooplanktons।
    • विभिन्न शब्दों के बीच कुछ ओवरलैप और अस्पष्टता है - अपना सर्वश्रेष्ठ कार्य करें।
    • यदि आप जोड़ते हैंioos\_categoryसूची<categoryAttributes> मेंERDDAP'साइटमैपफ़ाइल, उपयोगकर्ता आसानी से डेटासेट को समान डेटा के माध्यम से ढूंढ सकते हैंERDDAPहोम पेज पर "वर्ग द्वारा डेटासेट के लिए खोज"। प्रयोगioos\_categoryब्याज के डेटासेट की खोज करने के लिए।
    • वहाँ थाचर्चाERDDAP™औरioos\_categoryमेंERDDAP™गूगल ग्रुप

आपको सेट करने के लिए लुभाया जा सकता है<चर MustHaveIoosCategory> झूठी है ताकि इस विशेषता की आवश्यकता नहीं है। ("Pfft! मुझे क्या है?) कुछ कारणों से यह सच करने के लिए सेट करने के लिए (डिफ़ॉल्ट) उपयोगioos\_categoryहैं:

  • अगर सेटअप.xml है<चर MustHaveIoosCategory> सही करने के लिए सेट है,जनरेट DatasetXmlहमेशा एक बनाता है / बनाता हैioos\_categoryप्रत्येक नए डेटासेट में प्रत्येक चर के लिए विशेषता। क्यों न केवल इसे छोड़ें?
  • ERDDAP™उपयोगकर्ताओं को श्रेणी के आधार पर ब्याज के डेटासेट की खोज करने देता है।ioos\_categoryएक बहुत ही उपयोगी खोज श्रेणी है क्योंकि ioos \_categories (उदाहरण के लिए, तापमान) काफी व्यापक हैं। यह बनाता हैioos\_categoryइस उद्देश्य के लिए बेहतर, उदाहरण के लिए, बहुत ज्यादा बारीक सीएफstandard\_names (जो इस उद्देश्य के लिए इतना अच्छा नहीं है क्योंकि सभी समानार्थक शब्द और मामूली विविधताओं के कारण, उदाहरण के लिए, समुद्र \_surface \_temperature बनाम समुद्र तट) । (Using)ioos\_categoryइस उद्देश्य के लिए नियंत्रित किया जाता है<categoryAttributes> अपने सेटअप.xml फ़ाइल में। प्रयोगioos\_categoryब्याज के डेटासेट की खोज करने के लिए।
  • ये श्रेणियां हैंNOAAएकीकृत महासागर अवलोकन प्रणाली (आईओएस) । ये श्रेणियां आईओओएस के मिशन के आईओओएस के विवरण के लिए मौलिक हैं। यदि आपNOAAसमर्थनioos\_categoryअच्छा है एकNOAAक्या करना है। (इसे देखेंएकNOAAवीडियोऔर प्रेरित होना!) यदि आप कुछ अन्य अमेरिकी या अंतर्राष्ट्रीय एजेंसी में हैं, या सरकारी एजेंसियों के साथ काम करते हैं, या कुछ अन्य महासागर अवलोकन प्रणाली के साथ काम करते हैं, तो क्या यह अमेरिकी IOOS कार्यालय के साथ सहयोग करने का एक अच्छा विचार नहीं है?
  • जल्द ही, आप कुछ अन्य चाहते हैंERDDAP™अपने डेटासेट के माध्यम से लिंक करने के लिएEDDGridसेंधऔरEDDTableFromErddap। यदि अन्यERDDAP™आवश्यकताioos\_categoryअपने डेटासेट होना चाहिएioos\_categoryआदेशEDDGridErddap और EDDTableFromErddap से काम करने के लिए।
  • इसमें शामिल होना मनोवैज्ञानिक रूप से बहुत आसान हैioos\_categoryजब आप डेटासेट बनाते हैं (यह सिर्फ एक और चीज है किERDDAP™डेटासेट को जोड़ने की आवश्यकता हैERDDAP) इस तथ्य के बाद इसे जोड़ने की तुलना में (यदि आप भविष्य में इसका उपयोग करने का फैसला करते हैं) ।  
long\_name
  • long\_name (COARDS,CFऔरएसीडीमेटाडाटा मानकों) में एक RECOMMENDED चर विशेषता हैERDDAP। उदाहरण के लिए,
        <att name="long\\_name">Eastward Sea Water Velocity</att>
    • ERDDAP™उपयोगlong\_nameग्राफ़ पर अक्षों को लेबल करने के लिए।
    • सर्वश्रेष्ठ अभ्यास: शब्दों में कैपिटल करेंlong\_nameजैसा कि यह एक शीर्षक था (पहले शब्द और सभी गैर-आर्टिकल शब्दों को कैपिटल करें) । में इकाइयों को शामिल न करेंlong\_name। लंबे नाम को बहुत लंबा नहीं होना चाहिए (आमतौर पर)<20 वर्ण), लेकिन अधिक वर्णनात्मक होना चाहिएdestinationName, जो अक्सर बहुत संक्षिप्त होता है।
    • यदिlong\_name" चर में परिभाषित नहीं हैस्रोतAttributesया<addAttributes>ERDDAP™इसे सफाई करके उत्पन्न करेगाstandard\_name (यदि) याdestinationName।  
missing\_value
  • missing\_value और \_Fill मूल्य (COARDSऔरCF) वेरिएबल गुण हैं जो एक संख्या का वर्णन करते हैं (उदाहरण के लिए, -9999) जिसका उपयोग लापता मूल्य का प्रतिनिधित्व करने के लिए किया जाता है। उदाहरण के लिए,

<att name="missing\_value" type="double"\>-9999</att>

स्ट्रिंग चर के लिए, दोनों के लिए डिफ़ॉल्ट "" है (खाली स्ट्रिंग) । संख्यात्मक चर के लिए, दोनों के लिए डिफ़ॉल्ट NaN है।

  • ERDDAP™दोनों का समर्थनmissing\_value\_FillValue, चूंकि कुछ डेटा स्रोत उन्हें थोड़ा अलग अर्थ देते हैं।
  • यदि वर्तमान में, वे चर के रूप में एक ही डेटा प्रकार का होना चाहिए।
  • यदि डेटा के साथ पैक किया जाता हैscale\_factorऔर/oradd\_offset,missing\_value\_FillValue मूल्यों को इसी तरह पैक किया जाना चाहिए। इसी तरह, स्ट्रिंग डेट / टाइम वैल्यू वाले कॉलम के लिए जो स्थानीय लोगों का उपयोग करते हैंtime\_zone,missing\_valueऔर \_FillValue मान स्थानीय समय क्षेत्र का उपयोग करना चाहिए।
  • यदि कोई परिवर्तनीय इन विशेष मूल्यों का उपयोग करता है, तो वह इन विशेष मूल्यों का उपयोग करता है।missing\_valueand/or \FillValue विशेषताएँ आवश्यक हैं।
  • के लिएसमय और समय-समय परिवर्तनशील (क्या स्रोत स्ट्रिंग्स या संख्यात्मक है) ,missing\_valueS and \FillValues "" के रूप में दिखाई देते हैं (खाली स्ट्रिंग) जब समय एक स्ट्रिंग के रूप में लिखा जाता है और जब समय एक डबल के रूप में लिखा जाता है तो नैन के रूप में। के लिए स्रोत मानmissing\_value\_FillValue चर के मेटाडाटा में दिखाई नहीं देगा।
  • स्ट्रिंग चर के लिए,ERDDAP™हमेशा किसी भी रूप में परिवर्तितmissing\_valueS or \FillValue डेटा मान "" में (खाली स्ट्रिंग) । के लिए स्रोत मानmissing\_value\_FillValue चर के मेटाडाटा में दिखाई नहीं देगा।
  • संख्यात्मक चर के लिए: The The most of themissing\_valueऔर \_FillValue चर के मेटाडाटा में दिखाई देगा। कुछ आउटपुट डेटा प्रारूपों के लिए,ERDDAP™इन विशेष संख्याओं को बरकरार रखेगा, उदाहरण के लिए, आप -9999 देखेंगे। अन्य आउटपुट डेटा प्रारूपों के लिए (विशेष रूप से टेक्स्ट-जैसे प्रारूपों जैसे .csv और.htmlTable) ,ERDDAP™इन विशेष संख्याओं को नान या " के साथ बदल देगा।
  • कुछ डेटा प्रकारों में अंतर्निहित लापता मान मार्कर होते हैं जिन्हें स्पष्ट रूप से पहचान करने की आवश्यकता नहीं हैmissing\_valueया \_FillValue विशेषताएँ: फ्लोट और डबल वेरिएबल में NaN है (नहीं) , स्ट्रिंग मान खाली स्ट्रिंग का उपयोग करते हैं, और चार मूल्यों में चरित्र होता है\uffff (चरित्र #65535, जो यूनिकोड का मूल्य नहीं है चरित्र) । पूर्णांक डेटा प्रकारों में अंतर्निहित लापता मान मार्कर नहीं होते हैं।
  • यदि एक पूर्णांक चर में एक लापता मान होता है (उदाहरण के लिए, एक .csv फ़ाइल में खाली स्थान) ,ERDDAP™परिभाषित मान की व्याख्या करेगाmissing\_valueउस परिवर्तनीय के लिए \_FillValue। यदि कोई परिभाषित नहीं है,ERDDAP™उस डेटा प्रकार के लिए डिफ़ॉल्ट लापता मान के रूप में मूल्य की व्याख्या करेगा, जो हमेशा अधिकतम मान होता है जो उस डेटा प्रकार द्वारा आयोजित किया जा सकता है: 127 बाइट वेरिएबल, 32767 शॉर्ट के लिए, 2147483647 int के लिए, 9223372036854775807 लंबे समय तक Ubyte के लिए 255, ushort के लिए 65535, Uint के लिए 4294967295, और 18446744073709551615 ulong के लिए।
ADD \_FillValue ATTRIBUTES?
  • ADD \_FillValue ATTRIBUTES?
    हर बारERDDAP™डेटासेट लोड करता है, यह जांचता है कि अगर पूर्णांक स्रोत डेटा प्रकारों के साथ चर में एक परिभाषित होता हैmissing\_valueया \_FillValue विशेषता। यदि कोई परिवर्तनीय नहीं है, तो फिरERDDAP™लॉग फ़ाइल में एक संदेश प्रिंट करता है ("Add \_FillValue Attribute" के साथ शुरू?) यह सिफारिश करते हुए किERDDAP™व्यवस्थापक \Fill जोड़ें में इस चर के लिए मूल्य विशेषताdatasets.xml। यह हर परिवर्तनीय के लिए एक \FillValue या होना बहुत उपयोगी हैmissing\_valueक्योंकि लापता मान हमेशा संभव होते हैं, उदाहरण के लिए, यदि किसी डेटासेट में दी गई फ़ाइल में कोई परिवर्तनीय नहीं होता है,ERDDAP™उस चर के लिए सभी लापता मूल्यों के रूप में उस चर को पेश करने में सक्षम होना चाहिए। यदि आप एक चर का निर्णय लेते हैं तो उसे \FillValue विशेषता नहीं होनी चाहिए, तो आप जोड़ सकते हैं <att name="\_FillValue"> null<इसके बजाय /att>, जो उस संदेश को दबा देगाdatasetIDभविष्य में परिवर्तनीय संयोजन।

हर बारERDDAP™शुरू होता है, यह उन सभी सिफारिशों को एक संदेश में एकत्र करता है जो लॉग फ़ाइल में लिखा जाता है (शुरूADD \_FillValue ATTRIBUTESक्या?) ईमेलERDDAP™व्यवस्थापक और एक CSV डेटा फ़ाइल में लिखा\[बड़ाParentDirectory\]/logs/ निर्देशिका। यदि आप चाहते हैं, तो आप GenerateDatasetsXml प्रोग्राम का उपयोग कर सकते हैं (और AddFillValueAttributes विकल्प) CSV फ़ाइल में सभी सुझावों को लागू करने के लिएdatasets.xmlफ़ाइल किसी के लिएdatasetIDउस फ़ाइल में परिवर्तनीय संयोजन, यदि आप निर्णय लेते हैं तो जिम्मेदार जोड़ने की कोई आवश्यकता नहीं है, तो आप विशेषता को बदल सकते हैं<att name="\_FillValue"> null<उसके लिए सिफारिश को दबाने के लिए /att>datasetIDभविष्य में परिवर्तनीय संयोजन।

यह महत्वपूर्ण है! जैसा कि बॉब ने अक्सर कहा है: यह बुरा होगा (शर्मनाक) यदि वैश्विक वार्मिंग के कुछ सबूत डेटा में अज्ञात लापता मूल्यों के कारण हुए थे (उदाहरण के लिए, 99 या 127 डिग्री के तापमान मान C जिसे लापता मान के रूप में चिह्नित किया जाना चाहिए और इस प्रकार मध्य और / या मध्यकालीन आँकड़ों को उच्चतर बताया गया है।) ।

  • \_FillValue औरmissing\_valueविभिन्न स्रोत फ़ाइलों में दिए गए चर के लिए मान सुसंगत होना चाहिए; अन्यथा,ERDDAP™फ़ाइलों को मानों के एक सेट के साथ स्वीकार करेगा और अन्य सभी फाइलों को "Bad Files" के रूप में अस्वीकार करेगा। समस्या को हल करने के लिए,
    • यदि फ़ाइलों को ग्रिड किया जाता है.ncफ़ाइलें, आप उपयोग कर सकते हैंEDDGridसे NcFilesUnpacked
    • यदि फाइलें सारणीबद्ध डेटा फाइलें हैं, तो आप EDDTableFrom का उपयोग कर सकते हैं। 'मानकीकरण क्याबताने के लिएERDDAPस्रोत फ़ाइलों को मानकीकृत करने के लिए क्योंकि उन्हें पढ़ा जाता हैERDDAP।
    • कठिन समस्याओं के लिए, आप उपयोग कर सकते हैंएनसीएमएलयाNCOसमस्या को हल करने के लिए।  
scale\_factor
  • scale\_factor (डिफ़ॉल्ट = 1) और add\_offset (डिफ़ॉल्ट = 0) (COARDSऔरCF) वैकल्पिक चर गुण हैं जो डेटा का वर्णन करते हैं जो एक सरल रूपांतरण के माध्यम से एक सरल डेटा प्रकार में पैक किया जाता है।
    • यदि वर्तमान में, उनका डेटा प्रकार स्रोत डेटा प्रकार से अलग है और गंतव्य मूल्यों के डेटा प्रकार का वर्णन करता है। उदाहरण के लिए, एक डेटा स्रोत ने फ्लोट डेटा मानों को एक दशमलव अंक के साथ संग्रहीत किया हो सकता है जो शॉर्ट इंट्स के रूप में पैक किया गया है (int16) उपयोगscale\_factor= 0.1 औरadd\_offset= 0. उदाहरण के लिए,

    <att name="scale\_factor" type="float"\>0.1</att>
    <att name="add\_offset" type="float"\>0</att>

इस उदाहरण में,ERDDAP™डेटा को अनपैक करेगा और इसे उपयोगकर्ता को फ्लोट डेटा मान के रूप में पेश करेगा।

  • यदि उपस्थित हो,ERDDAP™इन विशेषताओं से मूल्यों को निकालेगा, विशेषताओं को हटा देगा और उपयोगकर्ता के लिए डेटा को स्वचालित रूप से अनपैक करेगा: गंतव्य मूल्य = स्रोत मानscale\_factor+add\_offset
    या, दूसरे तरीके से कहा: UnpackedValue = पैक मानscale\_factor+add\_offset
  • The The most of thescale\_factorऔरadd\_offsetविभिन्न स्रोत फ़ाइलों में दिए गए चर के लिए मान सुसंगत होना चाहिए; अन्यथा,ERDDAP™फ़ाइलों को मानों के एक सेट के साथ स्वीकार करेगा और अन्य सभी फाइलों को "Bad Files" के रूप में अस्वीकार करेगा। समस्या को हल करने के लिए,
    • यदि फ़ाइलों को ग्रिड किया जाता है.ncफ़ाइलें, आप उपयोग कर सकते हैंEDDGridसे NcFilesUnpacked
    • यदि फाइलें सारणीबद्ध डेटा फाइलें हैं, तो आप EDDTableFrom का उपयोग कर सकते हैं। 'मानकीकरण क्याबताने के लिएERDDAPस्रोत फ़ाइलों को मानकीकृत करने के लिए क्योंकि उन्हें पढ़ा जाता हैERDDAP।
    • कठिन समस्याओं के लिए, आप उपयोग कर सकते हैंएनसीएमएलयाNCOसमस्या को हल करने के लिए।  
standard\_name
  • standard\_name (सेCFमेटाडाटा मानक) में एक RECOMMENDED चर विशेषता हैERDDAP। CF अनुमति की सूची बनाए रखता हैCF मानक नाम। उदाहरण के लिए,
        <att name="standard\\_name">eastward\\_sea\\_water\\_velocity</att>
    • यदि आप जोड़ते हैंstandard\_nameचर' विशेषताओं के लिए और जोड़ेंstandard\_nameसूची<categoryAttributes> मेंERDDAP'साइटमैपफ़ाइल, उपयोगकर्ता आसानी से डेटासेट को समान डेटा के माध्यम से ढूंढ सकते हैंERDDAPहोम पेज पर "वर्ग द्वारा डेटासेट के लिए खोज"।
    • यदि आप एक CF निर्दिष्ट करते हैंstandard\_nameएक चर के लिए, वेरिएबल के लिए यूनिट विशेषता को सीएफ स्टैंडर्ड नेम टेबल में मानक नाम के लिए निर्दिष्ट कैनोनिकल यूनिट्स के समान नहीं होना चाहिए, लेकिन यूनिट MUST कैनोनिकल यूनिट्स के लिए परिवर्तनीय हो सकती है। उदाहरण के लिए, सभी तापमान से संबंधित CFstandard\_nameएस "K" है (केल्विन) कैनोनिकल इकाइयों के रूप में। तो तापमान से संबंधित एक चरstandard\_nameMUST में K, डिग्री \_C, डिग्री \_F, या उन नामों के कुछ UDUnits संस्करण की इकाइयां हैं, क्योंकि वे सभी परिवर्तनीय हैं।
    • सर्वश्रेष्ठ अभ्यास: शक्ति का हिस्सानियंत्रित शब्दावलीसूची में केवल शर्तों का उपयोग करने से आता है। इसलिए हम नियंत्रित शब्दावली में परिभाषित शर्तों से चिपके रहने की सलाह देते हैं, और यदि सूची में कोई उपयुक्त नहीं है तो हम एक शब्द बनाने के खिलाफ सलाह देते हैं। यदि आपको अतिरिक्त शर्तों की आवश्यकता है, तो देखें कि मानक समिति उन्हें नियंत्रित शब्दावली में जोड़ देगी।
    • standard\_nameमान केवल CF विशेषता मान हैं जो मामले संवेदनशील हैं। वे हमेशा सभी लोअरकेस होते हैं। शुरूERDDAP™v1.82, जेनरेटडाटासेट ऊपरी केस अक्षरों को लोअरकेस अक्षरों में बदल देगा। जब डेटासेट में लोड हो जाता हैERDDAP, अपरकेस अक्षरों को चुपचाप लोअरकेस अक्षरों में बदल दिया जाता है।  
time\_precision
  • time\_precisionद्वारा उपयोग की जाने वाली एक वैकल्पिक विशेषता हैERDDAP™ (कोई मेटाडाटा मानकों) के लिएसमय और समय-समय परिवर्तनशील, जो ग्रिड डेटासेट या सारणीबद्ध डेटासेट में हो सकता है, और इसमेंaxisVariableयाdataVariableS. उदाहरण के लिए,
        <att name="time\\_precision">1970-01-01</att>  
    time\_precisionजब भी इस्तेमाल किया जा करने के लिए परिशुद्धता निर्दिष्टERDDAP™उस परिवर्तनीय से समय मूल्यों को वेब पृष्ठों पर स्ट्रिंग के रूप में प्रारूपित करता है, जिसमें शामिल हैं.htmlTableप्रतिक्रियाएं। जहां फ़ाइल स्वरूपों मेंERDDAP™तार के रूप में प्रारूपों का समय (उदाहरण के लिए, .csv और.json) ,ERDDAP™केवल उपयोग करता हैtime\_precision- निर्दिष्ट प्रारूप यदि इसमें आंशिक सेकंड शामिल है; अन्यथा,ERDDAP™1970-01-01T00:00:00 Z प्रारूप।
  • मान्य मान 1970-01, 1970-01-01, 1970-01-01T00Z, 1970-01-01T00:00Z, 1970-01-01T00:00:00Z (डिफ़ॉल्ट) , 1970-01-01T00:00:00.0Z, 1970-01-01T00:00:00:00:00.00Z, 1970-01-01T00:00:00.000Z.\[1970 एक विकल्प नहीं है क्योंकि यह एक एकल संख्या है, इसलिएERDDAP™यह नहीं जानता कि यह एक स्वरूपित समय स्ट्रिंग है (साल) या यदि यह 1970-01-01T00:00:00Z के बाद से कुछ सेकंड है।\]
  • अगरtime\_precisionनिर्दिष्ट नहीं है या मूल्य मिलान नहीं है, डिफ़ॉल्ट मान का उपयोग किया जाएगा।
  • यहां के अन्य हिस्सों मेंERDDAP™, स्वरूपित समय कि प्रदर्शित नहीं कर रहे हैं के किसी भी क्षेत्र न्यूनतम मूल्य माना जाता है। उदाहरण के लिए, 1985-07, 1985-07-01, 1985-07-01T00Z, 1985-07-01T00:00Z, और 1985-07-01T00:00:00 Z सभी को समतुल्य माना जाता है, हालांकि परिशुद्धता के विभिन्न स्तरों में निहित है। यह मैचआईएसओ 8601:2004"extended"समय प्रारूप विनिर्देश
  • चेतावनी: आपको केवल सीमित उपयोग करना चाहिएtime\_precisionअगर सब चर के लिए डेटा मानों का केवल उन सभी क्षेत्रों के लिए न्यूनतम मूल्य है जो छिपे हुए हैं।
  • उदाहरण के लिए, आप एक उपयोग कर सकते हैंtime\_precision1970-01-01 यदि सभी डेटा मानों में घंटे = 0, मिनट = 0 और दूसरा = 0 है (उदाहरण के लिए 2005-03-04T00:00:00Z और 2005-03-05T00:00:00Z) ।
  • उदाहरण के लिए, उपयोग न करेंtime\_precision1970-01-01 अगर कोई 0 घंटे, मिनट, या सेकंड के मान हैं, (उदाहरण के लिए 2005-03-05T12:00Z) क्योंकि गैर-डिफ़ॉल्ट घंटे का मूल्य प्रदर्शित नहीं किया जाएगा। अन्यथा, यदि कोई उपयोगकर्ता समय = 2005-03-05 के साथ सभी डेटा के लिए पूछता है, तो अनुरोध अप्रत्याशित रूप से विफल हो जाएगा।  
time\_zone
  • time\_zone
    • time\_zoneद्वारा उपयोग की जाने वाली एक वैकल्पिक विशेषता हैERDDAP™ (कोई मेटाडाटा मानकों) के लिएसमय और समय-समय परिवर्तनशील, जो ग्रिड डेटासेट या सारणीबद्ध डेटासेट में हो सकता है।
    • डिफ़ॉल्ट " हैZulu" (जो GMT का आधुनिक समय क्षेत्र संस्करण है) ।
    • पृष्ठभूमि की जानकारी: "टाइम ऑफ़सेट" (उदाहरण के लिए, प्रशांत मानक समय, -08:00, GMT-8) निर्धारित, विशिष्ट, ऑफसेट के सापेक्ष हैंZulu (GMT) । इसके विपरीत, "टाइम जोन" डेलाइट सेविंग से प्रभावित होने वाली अधिक जटिल चीजें हैं (उदाहरण के लिए, "यूएस / प्रशांत") अलग-अलग स्थानों पर अलग-अलग नियमों का पालन किया जाता है। समय क्षेत्र हमेशा नाम होते हैं क्योंकि उन्हें एक सरल ऑफसेट मान द्वारा संक्षेपित नहीं किया जा सकता है (तालिका में "TZ डेटाबेस नाम" कॉलम देखें https://en.wikipedia.org/wiki/List\_of\_tz\_database\_time\_zones ) ।ERDDAP'time\_zoneविशेषता आपको कुछ समय क्षेत्र से स्थानीय समय डेटा से निपटने में मदद करती है (उदाहरण के लिए, 1987-03-25T17:32:05 प्रशांत समय) । यदि आपके पास स्ट्रिंग या संख्यात्मक समय डेटा है, तो एक साथ (निर्धारित) टाइम ऑफ़सेट, आपको बस डेटा को समायोजित करना चाहिएZulu (क्या हैERDDAP™करना) इकाई विशेषता में एक अलग आधार समय निर्दिष्ट करके (उदाहरण के लिए, " 1970-01-01T08:00:00Z के बाद से घंटे", टाइम ऑफ़सेट को निर्दिष्ट करने के लिए T08 को नोट करें) यह सुनिश्चित करने के लिए कि आप चाहते हैं कि परिणाम प्राप्त करें।
    • स्ट्रिंग्स से स्रोत डेटा के साथ टाइमस्टैम्प चर के लिए, यह विशेषता आपको एक समय क्षेत्र निर्दिष्ट करने देता है जो लीड करता हैERDDAP™स्थानीय समय क्षेत्र के स्रोत समय को परिवर्तित करने के लिए (कुछ मानक समय में, कुछ डेलाइट सेविंग टाइम में) मेंZuluबार (जो हमेशा मानक समय में होते हैं) । मान्य समय क्षेत्र नामों की सूची शायद TZ कॉलम में सूची के समान है। https://en.wikipedia.org/wiki/List\_of\_tz\_database\_time\_zones । आम अमेरिकी समय क्षेत्र हैं: US / Hawaii, US / Alaska, US / Pacific, US / Mountain, US / Arizona, US / Central, US / Eastern.
    • न्यूमेरिक स्रोत डेटा के साथ टाइमस्टैम्प चर के लिए, आप निर्दिष्ट कर सकते हैं "time\_zone" विशेषता, लेकिन मान होना चाहिए "Zuluयूटीसी यदि आपको अन्य समय क्षेत्रों के लिए समर्थन की आवश्यकता है, तो कृपया क्रिस को ईमेल करें। जॉन at noaa.gov.  
यूनिट
  • यूनिट (COARDS,CFऔरएसीडीमेटाडाटा मानक) डेटा मूल्यों की इकाइयों को परिभाषित करता है। उदाहरण के लिए,
        <att name="units">degree\\_C</att>
    • "इकाई" को एक स्रोत के रूप में जाना जाता हैAttribute या addAttribute के लिए"time"वेरिएबल और जब भी उचित हो तो अन्य चरों के लिए STRONGLY RECOMMENDED है। (जो हमेशा होता है) ।

    • सामान्य तौर पर, हम अनुशंसा करते हैंUDUnits\ संगत इकाइयों जो द्वारा आवश्यक हैCOARDSऔरCFमानकों।

    • एक अन्य सामान्य मानक हैUCUM-- यूनिट्स ऑफ मापन के लिए एकीकृत कोड।OGCजैसे सेवाएंSOS,WCS, औरWMSयूयूएम की आवश्यकता होती है और अक्सर यूयूएम को यूओएम के रूप में संदर्भित करती है (माप की इकाई) ।

    • हम अनुशंसा करते हैं कि आप अपने सभी डेटासेट के लिए एक यूनिट मानक का उपयोग करेंERDDAP। आपको बताना चाहिएERDDAP™आप किस मानक के साथ उपयोग कर रहे हैं<इकाइयों \_standard>, अपने मेंसाइटमैपफ़ाइल

    • विभिन्न स्रोत फ़ाइलों में दिए गए परिवर्तनीय इकाइयों को सुसंगत होना चाहिए। यदि आपके पास डेटा फ़ाइलों का संग्रह है जहां फ़ाइलों का एक सबसेट फ़ाइलों के एक या एक से अधिक अन्य सबसेट की तुलना में विभिन्न इकाइयों मानों का उपयोग करता है (उदाहरण के लिए,) "1985-01-01 के बाद से दिन" बनाम "2000-01-01 के बाद से दिन", "degree \_Celsius" बनाम "deg \_C", या "Knots" बनाम "m/s") आपको इकाइयों के मूल्यों को मानकीकृत करने का एक तरीका ढूंढना होगा, अन्यथा,ERDDAP™केवल फ़ाइलों के एक उपसेट लोड होगा। इसके बारे में सोचें: यदि एक फ़ाइल में विंडस्पीड यूनिट = नॉट्स है और किसी अन्य में विंडस्पीड यूनिट = m/s है, तो दोनों फाइलों के मूल्यों को समान डेटासेट में शामिल नहीं किया जाना चाहिए।

      • यदि फ़ाइलों को ग्रिड किया जाता है.ncकई स्थितियों में आप उपयोग कर सकते हैंEDDGridसे NcFilesUnpacked
      • यदि फाइलें सारणीबद्ध डेटा फाइलें हैं, तो कई स्थितियों में आप EDDTableFrom का उपयोग कर सकते हैं। 'मानकीकरण क्याबताने के लिएERDDAPस्रोत फ़ाइलों को मानकीकृत करने के लिए क्योंकि उन्हें पढ़ा जाता हैERDDAP।
      • कठिन समस्याओं के लिए, आप उपयोग कर सकते हैंएनसीएमएलयाNCOसमस्या को हल करने के लिए।
    • CF मानक अनुभाग 8.1 का कहना है कि अगर एक चर डेटा के माध्यम से पैक किया जाता हैscale\_factorऔर/oradd\_offset"एक चर की इकाइयां अनपैक्ड डेटा का प्रतिनिधि होना चाहिए।

    • समय और समय-समय पर चर के लिए,या तो चरस्रोतAttributesया<addAttributes> (जो पूर्वाग्रह लेता है) MUSTयूनिटक्या है

      • संख्यात्मक डेटा के साथ समय अक्ष चर या समय डेटा चर के लिए:UDUnits\ संगत स्ट्रिंग (प्रारूप के साथ यूनिट बाद में बेसटाइम ) स्रोत समय मूल्यों की व्याख्या कैसे करें (उदाहरण के लिए, 1970-01-01T00:00:00Z के बाद से सेकंड) ।

      यूनिट कोई भी हो सकता है:

          ms, msec, msecs, millis, millisec, millisecs, millisecond, milliseconds,  
      s, sec, secs, second, seconds, m, min, mins, minute, minutes, h, hr, hrs, hour, hours,
      d, day, days, week, weeks, mon, mons, month, months, yr, yrs, year, or years.

तकनीकी रूप से,ERDDAP™नहींUDUNITSजब परिवर्तित"years since"और"months since"समय मान"seconds since"। The The most of theUDUNITSमानक एक निश्चित, एकल मान के रूप में एक साल को परिभाषित करता है: 3.15569259747e7 सेकंड। औरUDUNITSएक महीने को वर्ष / 12 के रूप में परिभाषित करता है। दुर्भाग्य से, अधिकांश / सभी डेटासेट जिन्हें हमने देखा है कि उपयोग"years since"या"months since"स्पष्ट रूप से कैलेंडर वर्ष या कैलेंडर महीनों के लिए मानों का इरादा रखता है। उदाहरण के लिए, 3"months since 1970-01-01"आमतौर पर 1970-04-01 का मतलब होता है। तो,ERDDAP™व्याख्या"years since"और"months since"साल और महीने के रूप में, और कड़ाई से पालन नहीं करता हैUDUNITSमानक।

The The most of the बेसटाइम ISO 8601:2004 होना चाहिए (E) स्वरूपित तिथि समय स्ट्रिंग (yyyy-MM-dd'T'H:mm: ssZ, उदाहरण के लिए, 1970-01-01T00:00:00Z) , या उसके कुछ स्वरूप (उदाहरण के लिए, अंत में लापता भागों के साथ) ।ERDDAP™उस आदर्श प्रारूप की विविधताओं की एक विस्तृत श्रृंखला के साथ काम करने की कोशिश करता है, उदाहरण के लिए, "1970-1-1 0:0:0" समर्थित है। यदि समय क्षेत्र की जानकारी गायब हो जाती है, तो यह माना जाता है कि यह समय क्षेत्र की जानकारी गायब है।Zuluसमय क्षेत्र (AKA GMT) । यहां तक कि अगर किसी अन्य समय ऑफसेट निर्दिष्ट है,ERDDAP™कभी डेलाइट सेविंग टाइम का उपयोग नहीं करता। यदि आधारटाइम कुछ अन्य प्रारूपों का उपयोग करता है, तो आपको उपयोग करना चाहिए<addAttributes> एक नई इकाइयों स्ट्रिंग निर्दिष्ट करने के लिए जो ISO 8601:2004 की एक विविधता का उपयोग करता है (E) प्रारूप (उदाहरण के लिए, 1 जनवरी 1985 के बाद से 1985-01-01 के दिनों में परिवर्तन के दिन)।

आप परीक्षण कर सकते हैंERDDAPएक विशिष्ट से निपटने की क्षमता यूनिट बाद में बेसटाइम साथERDDAP'टाइम कनवर्टर। उम्मीद है, आप एक नंबर में प्लग कर सकते हैं (डेटा स्रोत से पहली बार मूल्य?) एक इकाई स्ट्रिंग, कन्वर्ट पर क्लिक करें, औरERDDAP™इसे आईएसओ 8601:2004 में परिवर्तित करने में सक्षम होगा (E) स्वरूपित तिथि समय स्ट्रिंग। अगर इकाई स्ट्रिंग पहचानने योग्य नहीं है तो कनवर्टर एक त्रुटि संदेश वापस कर देगा।

स्ट्रिंग टाइम यूनिट

आमतौर पर इस्तेमाल किए जाने वाले समय प्रारूपों के लिए जो आईएसओ 8601: 2004 के भिन्नताएं हैं (E) मानक प्रारूप (उदाहरण के लिए, 2018-01-02T00:00Z) , आप विविधताओं को निर्दिष्ट कर सकते हैंyyyy-MM-dd'T'H:mm: ssZ, उदाहरण के लिए, उपयोग करेंyyyy-MM-ddयदि केवल स्ट्रिंग टाइम की तारीख है। किसी भी प्रारूप के लिए जो yyyy-M के साथ शुरू होता है,ERDDAPएक विशेष पार्सर का उपयोग करता है जो प्रारूप में मामूली विविधताओं का बहुत महत्व देता है। पार्सर प्रारूप 'Z', "UTC", "GMT", ± XX: XX, ± XXXX, और ± XX प्रारूपों में समय क्षेत्र को संभाल सकता है। यदि तारीख के कुछ हिस्सों को निर्दिष्ट नहीं किया जाता है (उदाहरण के लिए, मिनट और सेकंड) ,ERDDAP™उस क्षेत्र के लिए सबसे कम मान लेता है (उदाहरण के लिए, यदि सेकंड निर्दिष्ट नहीं हैं, तो सेकंड = 0 मान लिया जाता है) ।

अन्य सभी स्ट्रिंग टाइम प्रारूपों के लिए, आपको एक डेटटाइमफॉर्मेटर-संगत समय प्रारूप स्ट्रिंग को ठीक से निर्दिष्ट करने की आवश्यकता है। लाइकyyyy-MM-dd'T'H:mm: ssZ, इन प्रारूप तारों को वर्णों से बनाया गया है जो समय स्ट्रिंग से एक विशिष्ट प्रकार की जानकारी की पहचान करते हैं, उदाहरण के लिए, मीटर का मतलब मिनट-ऑफ-घंटे होता है। यदि आप प्रारूप वर्ण को कुछ बार दोहराते हैं, तो यह अर्थ को और अधिक परिष्कृत करता है, उदाहरण के लिए, m का मतलब है कि मान किसी भी संख्या के अंकों द्वारा निर्दिष्ट किया जा सकता है, mm का मतलब है कि मान को 2 अंकों द्वारा निर्दिष्ट किया जाना चाहिए। The The most of theJavaDateTimeFormatter के लिए प्रलेखन एक कच्चे अवलोकन है और इन विवरणों को स्पष्ट नहीं बनाता है। इसलिए यहां प्रारूप चरित्र विविधताओं और उनके अर्थ की सूची हैERDDAP™ (जो कभी-कभी थोड़ा अलग होता हैJavaDateTimeFormatter) :

वर्णउदाहरणअर्थ
यू, वाई, वाई\-4712, 0, 1, 10, 100, 2018एक साल की संख्या, अंकों की संख्या।ERDDAP™Y (वर्ष का) Y (सप्ताह-आधारित वर्ष, क्योंकि यह अक्सर गलती से य के बजाय इस्तेमाल किया जाता है) जैसेखगोलीय वर्ष संख्या। खगोलशास्त्रीय वर्ष सकारात्मक या नकारात्मक पूर्णांक हैं जो बीसीई का उपयोग नहीं करते हैं (BC) सीई (विज्ञापन) युग Designator: 2018 = 2018CE, ..., 2 = 2CE, 1 = 1CE, 0 = 1BCE, -1 = 2BCE, -2 = 3BCE, ...
Uuuuu, yyyy, यमन\-4712, 0000, 0001, 0010, 0100, 20184 अंकीय खगोलीय वर्ष संख्या (किसी भी पूर्ववर्ती '-' की अनदेखी)
एम1, 01, 12एक महीने की संख्या, अंकों की संख्या (1 = जनवरी)
एमएम01, 122 अंक (शून्य गद्देदार) महीना
एमएमJan, Jan, JANएक 3 अक्षर अंग्रेजी महीने का नाम, केस असंवेदनशील
एमएमएमएमजनवरी, जन, JAN, जनवरी, जनवरी, जनवरी, JANUARY3 अक्षर या पूर्ण अंग्रेजी माह का नाम, मामले असंवेदनशील
D1, 01, 31एक दिन के महीने संख्या, अंकों की किसी भी संख्या
dd01, 312 अंक (शून्य गद्देदार) दिन का महीना। पहला 'अंक' अंतरिक्ष हो सकता है।
D1, 001,366डे-ऑफ-वर्ष, किसी भी संख्या में अंक, 001=जनवरी 1
डीडी001, 366दिन का वर्ष, 3 अंक, 001=जनवरी 1
EEEthu, THU, Thuएक 3 अक्षर डे-ऑफ- week, मान को नजरअंदाज कर दिया जाता है जब पार्सिंग
EEEthu, THU, Thu, thursday, THURSDAY, गुरुवारएक 3 अक्षर या पूर्ण अंग्रेजी डे-ऑफ-सप्ताह, केस असंवेदनशील, मान को नजरअंदाज कर दिया जाता है जब पार्सिंग
एच0, 00, 23दिन (0-23) किसी भी संख्या में अंक
एच00, 23HH hour of day (00-23) 2 अंक। पहला 'अंक' अंतरिक्ष हो सकता है।
aहूँ, AM, PM, PMAM or PM, case-inसंवेदनशील
एच12, 1, 01, 11घड़ी-घंटे का हूँ-pm (12, 1, 2, ... 11) किसी भी संख्या में अंक
hh12, 01, 11घड़ी-घंटे का हूँ-pm (12, 1, 2, ... 11) 2 अंक। पहला 'अंक' अंतरिक्ष हो सकता है।
K0, 1, 11समय-समय पर (0, 1, ...11) किसी भी संख्या में अंक
KK00, 01, 11समय-समय पर, 2 अंक
मीटर0, 00, 59मिनट के घंटे, अंकों की किसी भी संख्या
मिमी00, 59मिनट के घंटे, 2 अंक
s0, 00, 59दूसरे मिनट, अंकों की किसी भी संख्या
एस00, 59दूसरा मिनट, 2 अंक
एस0, 000, 9,999भिन्न-भिन्न, जैसे कि एक दशमलव बिंदु का पालन करना, अंकों की किसी भी संख्या
एसएस00, 99एक दूसरे का सौवां, 2 अंक
एसएसएस000, 999एक दूसरे के हजारों, 3 अंक
A0, 000, 86399999मिलीसेकंड ऑफ डे, किसी भी संख्या में अंक
AAAAAAAAA00000000, 86399999मिलीसेकंड ऑफ डे, 8 अंक
एन0, 000000000000000000, 86399999999999999नैनोसेकंड ऑफ डे, किसी भी संख्या में अंक। मेंERDDAP™, यह nMillis के लिए truncated है।
एनएनएन00000000000000, 86399999999999999नैनोसेकंड ऑफ डे, 14 अंक। मेंERDDAP™यह nMillis के लिए truncated है।
n0000000000000000, 59999999999नैनोसेकंड-ऑफ-सेकेंड, किसी भी संख्या में अंक। मेंERDDAP™यह nMillis के लिए truncated है।
nina00000000000, 59999999999999नैनोसेकंड का दूसरा, 11 अंक। मेंERDDAP™यह nMillis के लिए truncated है।
XXX, ZZZZ,-08:00, +01:00प्रारूप 'Z' या ± के साथ एक समय क्षेत्र (2 अंक घंटे ऑफसेट) : (2 अंक मिनट ऑफसेट) । यह व्यवहार अंतरिक्ष + (गैर मानक) । ZZZ समर्थन 'Z' गैर मानक है लेकिन एक आम उपयोगकर्ता त्रुटि के साथ सौदा करता है।
XX, ZZZ -0800, +0100प्रारूप 'Z' या ± के साथ एक समय क्षेत्र (2 अंक घंटे ऑफसेट) : (2 अंक मिनट ऑफसेट) । यह व्यवहार अंतरिक्ष + (गैर मानक) । ZZ समर्थन 'Z' गैर मानक है लेकिन एक आम उपयोगकर्ता त्रुटि के साथ सौदा करता है।
X, ZZ,-08, +01प्रारूप 'Z' या ± के साथ एक समय क्षेत्र (2 अंक घंटे ऑफसेट) : (2 अंक मिनट ऑफसेट) । यह व्यवहार अंतरिक्ष + (गैर मानक) । Z समर्थन 'Z' गैर मानक है लेकिन एक आम उपयोगकर्ता त्रुटि के साथ सौदों।
xxx\-08:00, +01:00प्रारूप के साथ एक समय क्षेत्र ± (2 अंक घंटे ऑफसेट) : (2 अंक मिनट ऑफसेट) । यह व्यवहार अंतरिक्ष + (गैर मानक) ।
xx\-0800, +0100प्रारूप के साथ एक समय क्षेत्र ± (2 अंक घंटे ऑफसेट) (2 अंक मिनट ऑफसेट) । यह व्यवहार अंतरिक्ष + (गैर मानक) ।
x\-08, +01प्रारूप के साथ एक समय क्षेत्र ± (2 अंक घंटे ऑफसेट) । यह व्यवहार अंतरिक्ष + (गैर मानक) ।
''टी', 'जेड', 'जीएमटी'वर्णों की एक श्रृंखला की शुरुआत और अंत
' ' (दो एकल उद्धरण)' 'दो एकल उद्धरण एक शाब्दिक एकल उद्धरण को दर्शाता है
\[\]\[ \]प्रारंभ ("\[") अंत ("\]") एक वैकल्पिक अनुभाग का। यह नोटेशन केवल साक्षर पात्रों और प्रारूप स्ट्रिंग के अंत में समर्थित है।
# 123;#125;# 123;#125;भविष्य के उपयोग के लिए आरक्षित
जी, एल, क्यू, ई, सी, वी, जेड, ओ, पीइन स्वरूपण वर्णों द्वारा समर्थित हैंJavaDateTimeFormatter, लेकिन वर्तमान में समर्थित नहीं हैERDDAP। यदि आपको उनके लिए समर्थन की आवश्यकता है, तो ईमेल क्रिस। जॉन at noaa.gov.

नोट्स:

  • punctuation के साथ एक तारीख समय में, संख्यात्मक मूल्यों में अंकों की एक परिवर्तनीय संख्या हो सकती है (उदाहरण के लिए, यूएस स्लैश डेट प्रारूप "1/2/1985" में महीने और तारीख 1 या 2 अंक हो सकती है।) इसलिए प्रारूप 1-लेटर टोकन का उपयोग करना चाहिए, उदाहरण के लिए, M/d/yyyyy, जो महीने और तारीख के लिए किसी भी संख्या में अंकों को स्वीकार करते हैं।
  • यदि किसी आइटम के लिए अंकों की संख्या स्थिर है, उदाहरण के लिए, 01/02/1985, तो प्रारूप में अंकों की संख्या निर्दिष्ट करें, उदाहरण के लिए, MM/dd/yyyyyyyy, 2-digit तारीख और 4 अंक वर्ष के लिए।
  • इन प्रारूपों के साथ काम करने के लिए मुश्किल है। एक दिए गए प्रारूप अधिकांश के लिए काम कर सकते हैं, लेकिन सभी नहीं, दिए गए चर के लिए समय स्ट्रिंग। हमेशा जांचें कि आपके द्वारा निर्दिष्ट प्रारूप में उम्मीद के रूप में काम कर रहा हैERDDAPसभी के लिए एक चर समय तार।
  • जब संभव हो, जनरेटडेटासेटएक्सएमएल टाइम प्रारूप स्ट्रिंग्स का सुझाव देगा।
  • यदि आपको एक प्रारूप स्ट्रिंग बनाने में मदद की आवश्यकता है, तो कृपया क्रिस को ईमेल करें। जॉन at noaa.gov.

मुख्य समय डेटा चर (सारणीबद्ध डेटासेट के लिए) और मुख्य समय अक्ष चर (ग्रिड डेटासेट के लिए) द्वारा मान्यता प्राप्त हैंdestinationNameसमय। उनकी इकाइयों मेटाडाटा संख्यात्मक समय मूल्यों के लिए एक UDUnits-संगत इकाइयों स्ट्रिंग होना चाहिए, उदाहरण के लिए, " 1970-01-01 के बाद से दिन" (सारणीबद्ध या ग्रिड डेटासेट के लिए) यास्ट्रिंग समय के लिए उपयुक्त इकाइयों, उदाहरण के लिए, "M/d/yyyyy" (सारणीबद्ध डेटासेट के लिए) ।

विभिन्न ग्रिड में विभिन्न समय इकाइयों.ncफ़ाइल - यदि आपके पास ग्रिड का संग्रह है.ncजहां, समय चर के लिए, फ़ाइलों का एक सबसेट फ़ाइलों के एक या एक से अधिक अन्य सबसेट की तुलना में अलग समय इकाइयों का उपयोग करता है, आप उपयोग कर सकते हैंEDDGridसे NcFilesUnpacked। यह समय मान को परिवर्तित करता है"seconds since 1970-01-01T00:00:00Z"निम्न स्तर पर, इस प्रकार मतभेदों को छिपाते हुए, ताकि आप विषम फ़ाइलों के संग्रह से एक डेटासेट बना सकें।

टाइमस्टैम्प चर

टाइमस्टैम्प चर-- कोई अन्य परिवर्तनीय (axisVariableयाdataVariableएक मेंEDDGridया EDDTable Dataset) एक टाइमस्टैम्प चर हो सकता है। टाइमस्टैम्प चर वेरिएबल हैं जिनके पास समय से संबंधित इकाइयां और समय डेटा हैं, लेकिन इसमें एक समय से संबंधित इकाइयां हैं।<destinationName> समय के अलावा टाइमस्टैम्प चर मुख्य समय चर की तरह व्यवहार करते हैं जिसमें वे स्रोत के समय स्वरूप को परिवर्तित करते हैं।"seconds since 1970-01-01T00:00:00Z"ISO 8601:2004 (E) प्रारूप).ERDDAP™समय पहचानता है उनके समय से संबंधित द्वारा मुद्रा चर "यूनिट" मेटाडाटा" जो इस नियमित अभिव्यक्ति से मेल खाती है "\[A-ZA\]+\[0-9\]+ (संख्यात्मक तिथि के लिए उदाहरण के लिए, टाइम्स"seconds since 1970-01-01T00:00:00Z") या तारीख होना टाइम प्रारूप स्ट्रिंग जिसमें "uuu", "yyyyy" या "YYYYY" शामिल हैं। (उदाहरण के लिए, "yyyy-MM-dd'T'H:mm: ssZ") । लेकिन अभी भी उपयोग करेंdestinationName "time"मुख्य तारीख के लिए समय चर।

हमेशा यह सुनिश्चित करने के लिए अपने काम की जांच करें कि जिस समय डेटा में दिखाया गया है, उस समय डेटा को प्रदर्शित करता है।ERDDAP™सही समय डेटा है। समय डेटा के साथ काम करना हमेशा मुश्किल होता है और गलती होती है।

देखेंसमय चर के बारे में अधिक जानकारी। ERDDAP™इसमें उपयोगिता हैएक न्यूमेरिक कनवर्ट करें समय-समय पर स्ट्रिंग टाइम से। देखेंकैसेERDDAP™समय के साथ सौदे।  

valid\_range

या

<att name="valid\_min" type="float"\>0.0</att>
<att name="valid\_max" type="float"\>40.0</att>

  • यदि वर्तमान में, उन्हें वैरिएबल के समान डेटा टाइप होना चाहिए और उस परिवर्तनीय के लिए डेटा के वैध न्यूनतम और अधिकतम मान निर्दिष्ट करना चाहिए। उपयोगकर्ताओं को इस श्रेणी के बाहर मूल्यों पर विचार करना चाहिए।
  • ERDDAP™लागू नहीं होताvalid\_range। एक और तरीका कहा:ERDDAP™डेटा मूल्यों को बाहर नहीं बदलता हैvalid\_range\_Fill मूल्य या मूल्यmissing\_value।ERDDAP™बस इस मेटाडाटा पर गुजरता है और एप्लिकेशन को आप तक छोड़ देता है। क्यों? यही कारण है कि यह मेटाडाटा क्या है। यदि डेटा प्रदाता चाहता था, तो डेटा प्रदाता ने डेटा मूल्यों को बाहर कर दिया है।valid\_range\_FillValues होना चाहिए।ERDDAP™डेटा प्रदाता का दूसरा अनुमान नहीं है। यह दृष्टिकोण सुरक्षित है: अगर यह बाद में दिखाया गया है किvalid\_rangeबहुत संकीर्ण या अन्यथा गलत था,ERDDAP™डेटा को obliterated नहीं होगा।
  • यदि डेटा के साथ पैक किया जाता हैscale\_factorऔर/oradd\_offset,valid\_range,valid\_minऔरvalid\_maxपैक किए गए डेटा प्रकार और मान होना चाहिए। चूंकिERDDAP™लागूscale\_factorऔरadd\_offsetजब यह डेटासेट लोड करता है,ERDDAP™unpacking होगाvalid\_range,valid\_minऔरvalid\_maxमान इतना है कि गंतव्य मेटाडाटा (उपयोगकर्ताओं को दिखाया गया) अनपैक्ड डेटा प्रकार और रेंज को इंगित करेगा। या, अगर एक unpacked \_valid\_rangeविशेषता मौजूद है, इसका नाम बदल दिया जाएगाvalid\_rangeजबERDDAP™डेटासेट लोड करता है।
<MVRows>
  • [ ** <MVRows ** ] (#removemvrows) में एक टैग के भीतर एक OPTIONAL टैग हैdatasets.xmlEDDTableFromFiles (सभी वर्गों सहित) हालांकि इसका उपयोग केवल EDDTableFromMultidimNcFiles के लिए किया जाता है। यह सच या झूठ का मान हो सकता है। उदाहरण के लिए, सच यह एक समूह के अंत में पंक्तियों के किसी भी ब्लॉक को हटा देता है जहां सभी मान हैंmissing\_value, \_FillValue, या CoHort ...Array देशी लापता मान (या Chararrays के लिए # 32) । यह CF DSG बहुआयामी सरणी फ़ाइल प्रकार और समान फ़ाइलों के लिए है। यदि सही है तो यह उचित परीक्षण करता है और इसलिए हमेशा सभी अधिकतम मंद चर को लोड करता है, इसलिए यह अतिरिक्त समय ले सकता है। का डिफ़ॉल्ट मान गलत है। सिफारिश -- यदि आपके डेटासेट के लिए संभव हो, तो हम अनुशंसा करते हैं कि MVRows को गलत तरीके से हटा दें। हटाने की सेटिंगMVRows को सच करने के लिए अनुरोध को धीमा कर सकते हैं, हालांकि कुछ डेटासेट के लिए आवश्यकता हो सकती है।