Работая сdatasets.xmlФайл
\[Эта страница будет представлять интерес только дляERDDAP™Администраторы.\]
После того, как вы последовали заERDDAP™ Инструкция по установкеВы должны редактироватьdatasets.xmlфайл в кот /content/erddap/ для описания наборов данных, которые выERDDAP™Установка будет служить.
Вы можете увидеть примерdatasets.xmlНа GitHub.
Введение
Некоторая сборка требуется
Настройка набора данных вERDDAP™Это не просто вопрос указания на каталог или URL набора данных. Вы должны написать часть XML дляdatasets.xmlкоторый описывает набор данных.
- Для сетчатых наборов данных, чтобы сделать набор данных соответствующимERDDAPСтруктура данных для сетчатых данных должна идентифицировать подмножество переменных набора данных, которые имеют одинаковые размеры. (Почему? Как?)
- Текущие метаданные набора данных импортируются автоматически. Но если вы хотите изменить эти метаданные или добавить другие метаданные, вы должны указать их вdatasets.xml. ИERDDAP™нуждается в других метаданных, в том числеглобальные атрибуты (такие какinfoUrlинститут,sourceUrl, резюме и название) ипеременные атрибуты (такие какlong\_nameи единицы) . Так же, как метаданные, которые в настоящее время находятся в наборе данных, добавляют описательную информацию к набору данных, метаданные, запрошенныеERDDAP™Добавляет описательную информацию в набор данных. Дополнительные метаданные являются хорошим дополнением к вашему набору данных и помогают.ERDDAP™Сделайте лучшую работу по представлению ваших данных пользователям, которые не знакомы с ними.
- ERDDAP™Вы должны делать особые вещи сдолгота, широта, высота (или глубина) и временные переменные.
Если вы купитесь на эти идеи и израсходуете усилия на создание XMLdatasets.xmlВы получаете все преимуществаERDDAP™В том числе:
- Полный текстовый поиск наборов данных
- Поиск наборов данных по категориям
- Форма доступа к данным ( datasetID .html) Таким образом, вы можете запросить подмножество данных в различных форматах файлов.
- Формы для запроса графиков и карт ( datasetID граф)
- Сервис Web Map (WMS) для сетчатых наборов данных
- RESTfulдоступ к вашим данным
Сделатьdatasets.xmlЭто требует значительных усилий для первых нескольких наборов данных. становится легче . После первого набора данных вы часто можете повторно использовать большую часть своей работы для следующего набора данных. К счастью,ERDDAP™поставляется с двумяИнструм ентыЧтобы помочь вам создать XML для каждого набора данныхdatasets.xml. Если вы застряли, посмотрите нашРаздел о дополнительной поддержке.
Поставщик данных форма
Когда к вам приходит поставщик данных, надеясь добавить некоторые данные в ваш компьютер.ERDDAPЭто может быть трудным и трудоемким для сбора всех метаданных. (Информация о наборе данных) Необходимо добавить набор данных вERDDAP. Многие источники данных (Например, файлы .csv, Файлы Excel, базы данных) не имеют внутренних метаданных, поэтомуERDDAP™имеет форму поставщика данных, которая собирает метаданные от поставщика данных и дает поставщику данных некоторые другие рекомендации, включая обширные рекомендации дляДанные в базах данных. Представленная информация преобразуется вdatasets.xmlформат, а затем по электронной почтеERDDAP™администратор (ты) и письменный (прилагаемый) то BigParent Директория /logs/dataProviderForm.log. Таким образом, форма полуавтоматизирует процесс получения набора данных вERDDAPно этоERDDAP™Администратор должен завершитьdatasets.xmlОбработка и получение файла данных (s) от поставщика или подключения к базе данных.
Подача фактических файлов данных из внешних источников представляет собой огромный риск безопасности.ERDDAP™Не имеет дело с этим. Вы должны найти решение, которое работает для вас и поставщика данных, например, электронная почта. (для небольших файлов) Вытащить из облака (Например, DropBox или Google Drive.) Сайт Sftp (с паролями) или кроссовки нет (USB большой палец или внешний жесткий диск) . Вы должны принимать только файлы от людей, которых вы знаете. Вам нужно будет сканировать файлы на наличие вирусов и принимать другие меры безопасности.
Нет никакой связи в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>
В фа йле setup.xml.
Толчком к этому послужилNOAA2014 годПубличный доступ к результатам исследований (ПАРР) директивакоторая требует, чтобы всеNOAAЭкологические данные, финансируемые за счет средств налогоплательщиков, предоставляются через службу данных. (Не только файлы) В течение 12 месяцев после создания. Повышен интерес к использованиюERDDAP™Чтобы сделать наборы данных доступными через службу ASAP. Нам нужен был более эффективный способ работы с большим количеством поставщиков данных.
Обратная связь / Предложения? Эта форма новая, поэтому, пожалуйста, пишитеerd dot data at noaa dot govЕсли у вас есть какие-либо отзывы или предложения по улучшению этого.
Инструменты
ERDDAP™Он поставляется с двумя программами командной строки, которые являются инструментами, которые помогут вам создать XML для каждого набора данных, который вы хотите.ERDDAP™служить. Как только вы создалиERDDAP™и запустить его (хотя бы один раз) Вы можете найти и использовать эти программы в кот /webapps/erddap/WEB-INF каталог. Есть скрипты оболочки Linux/Unix (с расширением .sh) и Windows скрипты (С расширением .bat) для каждой программы.\[В Linux эти инструменты запускаются одним и тем же пользователем. (Томкат?) Это будет Tomcat.\]Когда вы запустите каждую программу, она задаст вам вопросы. Для каждого вопроса введите ответ, затем нажмите Enter. Или нажмите ^C, чтобы выйти из программы в любое время.
Программа не будет работать?
- Если вы получили неизвестную программу (или аналогичный) Сообщение об ошибке, проблема в том, что операционная система не может найтиJava. Вы должны выяснить, гдеJavaОн находится на вашем компьютере, затем отредактируйте ссылку java в файле .bat или .sh, который вы пытаетесь использовать.
- Если вы получаете файл банка не найден или класс не найден сообщение об ошибке, тоJavaВы не можете найти один из классов, перечисленных в файле .bat или .sh. Решение состоит в том, чтобы выяснить, где находится файл .jar, и отредактировать ссылку на него в файле .bat или .sh.
- Если вы используете версиюJavaЭто слишком старая программа, программа не запускается, и вы увидите сообщение об ошибке.
Исключение в потоке "основной" java.lang.UnsupportedClassVersionError:
некоторый/класс/имя Неподдерживаемая версия major.minor некоторое число
Решение заключается в обновлении до последней версииJavaУбедитесь, что файл .sh или .bat для программы использует его.
Инструменты печатают различные диагностические сообщения:
- Слово «ERROR» используется, когда что-то пошло не так, что процедура не была завершена. Хотя это раздражает, чтобы получить ошибку, ошибка заставляет вас иметь дело с проблемой.
- Слово «предупреждение» используется, когда что-то пошло не так, но процедуру удалось завершить. Они довольно редкие.
- Все остальное — лишь информативное сообщение. Вы можете добавить \-verbose кГенерировать наборы данныхXmlилиDasDdsкомандная строка для получения дополнительных информативных сообщений, что иногда помогает решить проблемы.
Эти два инструмента очень полезны, но вы все равно должны внимательно прочитать все эти инструкции на этой странице и самостоятельно принимать важные решения.
Генерировать наборы данныхXml
- Генерировать наборы данныхXml Программа командной строки, которая может генерировать черновой проект набора данных XML практически для любого типа набора данных.
Мы настоятельно рекомендуем использовать GenerateDatasets Xml вместо того, чтобы создавать кускиdatasets.xmlОт руки, потому что:
- Генерировать наборы данных Xml работает в считанные секунды. Делать это вручную — это как минимум час работы, даже если вы знаете, что делаете.
- Генерировать наборы данных Xml работает лучше. Делать это вручную требует обширных знаний о том, какERDDAP™Работает. Маловероятно, что вы сделаете лучшую работу вручную. (Боб Саймонс всегда использует наборы данных Xml для первого черновика, и он написалERDDAP.)
- Генерировать наборы данных Xml всегда генерирует действительный кусокdatasets.xml. Любой кусокdatasets.xmlВы, вероятно, будете иметь по крайней мере несколько ошибок, которые предотвратятERDDAP™от загрузки набора данных. Часто людям требуется несколько часов, чтобы диагностировать эти проблемы. Не трать свое время. Пусть генерируют Наборы данных Xml делает тяжелую работу. Тогда вы можете усовершенствовать .xml вручную, если хотите.
Когда вы используете наборы данных Программа XML:
- В Windows, когда вы впервые запускаете GenerateDatasetsXml, вам нужно редактировать файл GenerateDatasetsXml.bat с текстовым редактором, чтобы изменить путь к java. Файл exe, чтобы Windows могла найтиJava.
- Генерировать наборы данных Xml сначала просит указать EDDType (Набор данных Erd Dap Тип) из набора данных. Видишь?Список типов наборов данных (в этом документе) Чтобы выяснить, какой тип подходит для набора данных, над которым вы работаете. В дополнение к обычным EDDTypes, есть также несколькоСпециальные / псевдотипы наборов данных (Например, тот, который сканирует каталог THREDDS, чтобы создать кусокdatasets.xmlдля каждого из наборов данных в каталоге) .
- Генерировать наборы данных Затем Xml задает вам ряд вопросов, относящихся к EDDType. Вопросы собирают информацию, необходимую дляERDDAP™получить доступ к источнику данных. Чтобы понять, чтоERDDAP™запрашивает, см. документацию для EDDType, которую вы указали, нажав на тот же тип набора данныхСписок типов наборов данных.
Если вам нужно ввести строку со специальными символами (Например, символы белого пространства в начале или конце, не-ASCII символы) Войдите вСтруна в стиле JSON (с особыми персонажами, сбежавшими с персонажами) . Например, чтобы ввести только символ вкладки, введите «\t» (с окружающими двойными цитатами, которые говорят:ERDDAP™Это струна в стиле JSON.
- Часто одним из ваших ответов будет не то, что нужно GenerateDatasetsXml. Затем вы можете попробовать снова, с пересмотренными ответами на вопросы, до генерации наборов данных. Xml может найти и пон ять исходные данные.
- Если вы правильно отвечаете на вопросы (или достаточно правильно) Генерировать наборы данных Xml подключится к источнику данных и соберет основную информацию (Например, имена переменных и метаданные) . Для наборов данных, которые являются локальнымиNetCDF .ncи связанные файлы, генерировать наборы данных Xml часто печатает ncdump-подобную структуру файла после его первого чтения. Это может дать вам информацию, чтобы лучше ответить на вопросы в последующем цикле через GenerateDatasetsXml.
- Генерировать наборы данных Затем Xml сгенерирует черновой проект набора данных XML для этого набора данных.
- Диагностическая информация и черновой проект набора данных XML будут записаны на BigParent Директория /logs/GenerateDatasetsXml.log.
- Грубый проект набора данных XML будет написан на BigParent Директория /logs/GenerateDatasetsXml.out.
"0 файлов" сообщение об ошибке
Если вы используете GenerateDatasets Xml илиDasDdsЕсли вы пы таетесь загрузитьEDDGridИз... материалов или из... Файлы Dataset inERDDAP™, и вы получаете сообщение об ошибке «0 файлов», указывающее, чтоERDDAP™найдено 0 совпадающих файлов в каталоге (Когда вы думаете, что в этом каталоге есть соответствующие файлы) :
-
Убедитесь, что вы указали полное имя каталога. И если вы указали имя файла образца, убедитесь, что вы указали полное имя файла, включая полное имя каталога.
-
Убедитесь, что файлы действительно находятся в этом каталоге.
-
Проверьте написание названия каталога.
-
Проверьте файл NameRegex. Очень, очень легко делать ошибки с регексами. Для целей тестирования попробуйте regex .\*, который должен соответствовать всем именам файлов. (Посмотри.нормативная документацияиучебник по регексу.)
-
Убедитесь, что пользователь, который запускает программу (Пользователь=tomcat (?) Для Tomcat/ERDDAP) У вас есть разрешение «читать» эти файлы.
-
В некоторых операционных системах (Например, SELinux) В зависимости от системных настроек пользователь, который запустил программу, должен иметь разрешение «читать» для всей цепочки каталогов, ведущих в каталог, в котором есть файлы.
-
Если у вас есть проблемы, которые вы не можете решить,запросить поддержкукак можно больше информации. Аналогичным образом, если кажется, что соответствующий EDDType для данного набора данных не работает с этим набором данных, или если нет соответствующего EDDType, пожалуйста, подавайте заявку на регистрацию.Обсуждение GitHubс подробностями (и образец файла, если это необходимо) .
Вам нужно отредактировать выход из GenerateDatasets Xml, чтобы сделать его лучше.
-
Дисклеймер: Курицаdatasets.xmlСделано, чтобы генерировать наборы данных Xml не идеален. Вы должны прочитать и отредактировать XML, прежде чем использовать его в публичной форме.ERDDAP. Генерировать наборы данных Xml полагается на множество правил, которые не всегда верны. Вы обязаны поддерживать правильность XML, к которому вы присоединились.ERDDAP'S'datasets.xmlФайл.
(Интересный факт: я не кричу. По историческим юридическим причинам отказ от ответственности должен быть написан во всех колпаках.)
Выход GenerateDatasetsXml является черновым проектом. Вам почти всегда придется его редактировать. Мы приложили и продолжаем прилагать огромные усилия, чтобы сделать выход как можно более готовым, но есть пределы. Часто необходимая информация просто недоступна из исходных метаданных.
Основная проблема заключается в том, что мы запрашиваем компьютерную программу. (Генерировать наборы данныхXml) Если бы вы дали такую же задачу 100 людям, вы бы получили 100 различных результатов. Нет единого «правильного» ответа. Очевидно, программа ближе всего подходит к чтению мыслей Боба. (Не твой) Но даже в этом случае это не всепонимающая программа ИИ, просто куча эвристиков, собранных вместе, чтобы выполнить задачу, похожую на ИИ. (Этот день всепонимающей программы ИИ может наступить, но он еще не наступил. Если это произойдет, у людей могут быть большие проблемы. Будьте осторожны с тем, что вы хотите.)
-
В информационных целях на выходе показаны глобальный источник Атрибуты и переменный источник Атрибуты в виде комментариев.ERDDAP™комбинирует атрибуты иaddAttributes (которые имеют приоритет) Чтобы сделать комбинированный Атрибуты, которые показываются пользователю. (И другие атрибуты автоматически добавляются к долготе, широте, высоте, глубине и временным переменным, когдаERDDAP™Фактически делает набор данных) .
-
Если вам не нравится исходный атрибут, перезапишите его, добавив дополнительный атрибут с тем же именем, но с другим значением. (или нет, если вы хотите удалить) .
-
Все этоaddAttributesЭто компьютерные предложения. Редактируйте их! Если вам не нравится дополнительный атрибут, измените его.
-
Если вы хотите добавить другиеaddAttributesДобавьте их.
-
Если вы хотите изменить аdestinationNameИзмени это. Но не меняйся.sourceNameС.
-
Вы можете изменить порядокdataVariableили удалить любой из них.
- Затем вы можете использоватьDasDds (см. ниже) многократно тестировать XML для этого набора данных, чтобы убедиться, что полученный набор данных отображается так, как вы хотите.ERDDAP.
- Не стесняйтесь вносить небольшие изменения вdatasets.xmlЧасти, которые были созданы, например, обеспечивают лучшуюinfoUrl, резюме или название.
Не добавляйте стандартные имена
Если вы включаете \-doNotAddStandardNames в качестве параметра командной строки при генерации Наборы данных Xml, генерировать Наборы данных Xml не будет добавлятьstandard\_nameкaddAttributesдля любых переменных, кроме переменных широты, долготы, высоты, глубины или времени (которые очевидныstandard\_names) . Это может быть полезно, если вы используете выход из генерации. Наборы данных Xml непосредственно вERDDAP™Не редактируя выход, потому что генерировать Наборы данных Xml часто угадываетstandard\_nameнеправильно. (Обратите внимание, что мы всегда рекомендуем вам редактировать вывод перед его использованием.ERDDAP.) Использование этого параметра будет иметь другие незначительные связанные эффекты, потому чтоstandard\_nameчасто используется для других целей, например, для создания новогоlong\_name, а также для создания цветовых баров.
Сценарий
В качестве альтернативы интерактивному ответу на вопросы на клавиатуре и циклированию для создания дополнительных наборов данных вы можете предоставить аргументы командной строки для ответа на все вопросы для создания одного набора данных. Генерировать наборы данных Xml обрабатывает эти параметры, записывает вывод в файл вывода и выходит из программы.
Чтобы настроить это, сначала используйте программу в интерактивном режиме и запишите свои ответы. Вот частичный пример: Допустим, вы запускаете сценарий: ./GenerateDatasetsXml.sh Далее введите: EDDTableFromAsciiFiles Введите: /u00/data/ Затем введите: .*\.asc Далее введите: /u00/data/sampleFile.asc Далее введите: ISO-8859-1
Чтобы запустить это неинтерактивным способом, используйте эту командную строку: ./GenerateDatasetsXml.sh EDDTableFromAsciiFiles/u00/data/.\*\.asc/u00/data/sampleFile.asc ISO-8859-1 Таким образом, вы просто перечислите все ответы в командной строке. Это должно быть полезно для наборов данных, которые часто меняются таким образом, что требует повторного запуска наборов данных. Xml ( особенноEDDGridИз ThreddsCatalog) .
Подробности:
- Если параметр содержит пространство или какой-то специальный символ, то закодируйте параметр какСтруна в стиле JSONНапример, "мой параметр с пробелами и двумя\nлинии".
- Если вы хотите указать пустую строку в качестве параметра, используйте: ничего
- Если вы хотите указать значение параметра по умолчанию, используйте:
- Генерировать наборы данных Xml поддерживает -i наборы данных XmlName # имя параметр командной строки, который вставляет выход в указанныйdatasets.xmlфайл (Дефолт является кот /content/erddap/datasets.xml) . Генерировать наборы данных Xml ищет две строки в наборах данных XmlName:
<!-- Begin GenerateDatasetsXml #*tagName someDatetime* -->
и
<!-- End GenerateDatasetsXml #*tagName someDatetime* -->
и заменяет все между этими строками новым контентом и изменяет некоторое время.
- Переключатель i обрабатывается только (и изменения вdatasets.xmlпроизводится только) Если вы используете GenerateDatasets Xml с аргументами командной строки, которые определяют все ответы на все вопросы для одного цикла программы. (См. статью «Сценарий» выше.) (Мышление таково: этот параметр предназначен для использования со сценариями. Если вы используете программу в интерактивном режиме (ввод информации на клавиатуре) Вы, вероятно, сгенерируете некоторые неправильные фрагменты XML, прежде чем сгенерировать тот, который вы хотите.)
- Если строки «Начало» и «Конец» не найдены, то эти строки и новый контент вставляются прямо перед этим.</erddapDatasets.
- Существует также -I (капитал i) переключатель для целей тестирования, который работает так же, как -i, но создает файл, называемыйdatasets.xml Время даты и не вносит изменений вdatasets.xml.
- Не запускайте GenerateDatasets Xml с -i в двух про цессах одновременно. Есть вероятность, что будет сохранен только один набор изменений. Могут быть серьезные проблемы (Например, поврежденные файлы) .
Если вы используете «GenerateDatasetsXml-verbose», он будет печатать больше диагностических сообщений, чем обычно.
Специальные / псевдотипы наборов данных
Варианты EDDType в GenerateDatasets Xml соответствие типов EDD, описанных в этом документе (Видишь?Список типов наборов данных) и создать одинdatasets.xmlфрагмент для создания одного набора данных из одного конкретного источника данных. Есть несколько исключений и особых случаев:
EDDGridИз Эрддапа
EDDType генерирует всеdatasets.xmlКуски, которые нужно сделатьEDDGridИз Эрддапанаборы данных от всехEDDGridНаборы данных в удаленномERDDAP. У вас будет возможност ь сохранить оригинал.datasetIDs (которые могут дублировать некоторыеdatasetIDуже в вашейERDDAP) или создавать новые имена, которые будут уникальными; (Но, как правило, не так читабельны) .
EDDTable FromErddap
EDDType генерирует всеdatasets.xmlКуски, которые нужно сделатьEDDTable FromErddapнаборы данных из всех наборов данных EDDTable в удаленномERDDAP. У вас будет возможность сохранить оригинал.datasetIDs (которые могут дублировать некоторыеdatasetIDуже в вашейERDDAP) или создавать новые имена, которые будут уникальными; (Но, как правило, не так читабельны) .
EDDGridИз ThreddsCatalog
EDDType генерирует всеdatasets.xmlКуски, необходимые для всехEDDGridИз папынаборы данных, которые он может найти, сканируя рекурсивно через THREDDS (субподряд) каталог. Существует множество форм каталога THREDDS URL. Эта опция требует URL .xml с /catalog / в нем, например,
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/catalog.xml или
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/chla/catalog.xml
(перенаправлено с «Каталог .html»)
https://oceanwatch.pfeg.noaa.gov/thredds/Satellite/aggregsatMH/chla/catalog.html которые не являются приемлемыми дляEDDGridИз ThreddsCatalog.
Если у вас есть проблемы сEDDGridИз Тредд Каталог:
- Убедитесь, что URL, который вы используете, действителен, включает /catalog / и заканчивается /catalog.xml.
- Если возможно, используйте публичный IP-адрес. (Например, https://oceanwatch.pfeg.noaa.gov ) URL, а не локальный цифровой IP-адрес (Например, https://12.34.56.78 ) . Если THREDDS доступен только через локальный цифровой IP-адрес, вы можете использовать<конвертироватьToPublicSourceUrl> (#конвертный публичный ресурс) такERDDAP™Пользователи видят публичный адрес, даже еслиERDDAP™Получает данные с локального числового адреса.
- Если у вас есть проблемы, которые вы не можете решить,Проверьте советы по устранению неполадок.
- Низкоуровневый код для этого теперь используетUnidatanetcdf-java каталог crawler code (Толстяки. Каталожные классы) Чтобы он мог обрабатывать все каталоги THREDDS (которые могут быть удивительно сложными) БлагодаряUnidataдля этого кода.
EDDGridLonPM180FromErddapКаталог
Данный тип генерируетdatasets.xmlделатьEDDGridLonPM180наборы данных от всехEDDGridнаборы данных в одномERDDAPкоторые имеют значения долготы более 180.
- Если возможно, используйте публичный IP-адрес. (Например, https://oceanwatch.pfeg.noaa.gov ) URL, а не локальный цифровой IP-адрес (Например, https://12.34.56.78 ) . ЕслиERDDAP™Доступен только через локальный цифровой IP-адрес, который вы можете использовать.<конвертироватьToPublicSourceUrl> (#конвертный публичный ресурс) такERDDAP™Пользователи видят публичный адрес, даже еслиERDDAP™Получает данные с локального числового адреса.
EDDGridLon0360FromErddapКаталог
Данный тип генерируетdatasets.xmlделатьEDDGridLon0360наборы данных от всехEDDGridнаборы данных в одномERDDAPкоторые имеют значения долготы менее 0.
- Если возможно, используйте публичный IP-адрес. (Например, https://oceanwatch.pfeg.noaa.gov ) URL, а не локальный цифровой IP-адрес (Например, https://12.34.56.78 ) . ЕслиERDDAP™Доступен только через локальный цифровой IP-адрес, который вы можете использовать.<конвертироватьToPublicSourceUrl> (#конвертный публичный ресурс) такERDDAP™Пользователи видят публичный адрес, даже еслиERDDAP™Получает данные с локального числового адреса.
EDDs From Files
Учитывая начальный каталог, он пересекает каталог и все подкаталоги и пытается создать набор данных для каждой группы файлов данных, которые он находит.
- Это предполагает, что когда набор данных найден, набор данных включает все подкаталоги.
- Если набор данных найден, аналогичные каталоги братьев и сестер будут рассматриваться как отдельные наборы данных. (Например, каталоги 1990-х, 2000-х, 2010-х годов будут генерировать отдельные наборы данных.) . Их легко комбинировать вручную — просто измените первый набор данных.<fileDir> в родительский каталог и удалить все последующие наборы данных.
- Это позволит создать лишь частьdatasets.xmlнаиболее распространенный тип расширения файла в каталоге (Не считая .md5, который игнорируется) . Итак, дается каталог с 10.ncфайлы и файлы 5.txt, набор данных будет генерироваться для.ncТолько файлы.
- Это предполагает, что все файлы в каталоге с одинаковым расширением принадлежат к одному и тому же набору данных. Если в каталоге есть.ncФайлы с данными SST и некоторые.ncФайлы с данными хлорофилла, только один образец.ncФайл будет читаться (ССТ? Хлорофилл?) Для этого типа файла будет создан только один набор данных. Этот набор данных, вероятно, не будет загружаться из-за сложностей с загрузкой двух типов файлов в один и то т же набор данных.
- Если в каталоге меньше 4 файлов с наиболее распространенным расширением, это предполагает, что они не являются файлами данных и просто пропускают каталог.
- Если в каталоге есть 4 или более файлов, но это не может успешно генерировать частьdatasets.xmlдля файлов (Например, неподдерживаемый тип файла) Это будет генерироватьEDDTable FromFileNamesНабор данных для файлов.
- В конце диагностики, что это записывает в файл журнала, непосредственно передdatasets.xmlКуски, это напечатает таблицу с резюме информации, собранной путем пересечения всех подкаталогов. В таблице будут перечислены все подкаталоги и указан наиболее распространенный тип расширения файла, общее количество файлов и какой тип набора данных был создан для этих файлов. (если есть) . Если вы столкнулись со сложной, глубоко вложенной файловой структурой, рассмотрите возможность запуска GenerateDatasets. Xml с EDDType=EDDsFromFiles только для генерации этой информации,
- Этот вариант может не очень хорошо угадать лучший EDDType для данной группы файлов данных, но это быстро, легко и стоит попробовать. Если исходные файлы подходят, они х орошо работают и являются хорошим первым шагом в создании исходных файлов.datasets.xmlдля файловой системы с большим количеством подкаталогов, каждый с файлами данных из разных наборов данных.
EDDTable FromEML и EDDTable FromEMLBatch
Специальный EDDType генерируетdatasets.xmlчтобы сделатьEDDTableFromAsciiFilesнабор данных из каждой таблицы, описанной вЭкологический язык метаданныхXML файл. Вариант «Бэтч» работает со всеми файлами EML в локальном или удаленном каталоге. Пожалуйста, смотрите отдельноДокументация для EDDTableFromEML.
EDDTable FromInPort
Этот специальный EDDType генерируетdatasets.xmlчтобы сделатьEDDTableFromAsciiFilesнабор данных из информации винпорт-хмлФайл. Если вы можете получить доступ к исходному файлу данных (файл inport-xml должен иметь подсказки, где его найти) Вы можете создать рабочий набор данных вERDDAP.
Следующие шаги описывают, как использовать наборы данных Xml с файлом inport-xml, чтобы получить рабочий набор данныхERDDAP.
- Если у вас есть доступ к файлу inport-xml (URL или локальный файл) Скачать GenerateDatasets Xml, укажите EDDType=EDDTableFromInPort, укажите URL-адрес inport-xml или полное имя файла, укажите, какой ребенок=0, и укажите другую запрашиваемую информацию (если известно) . (На данный момент вам не нужно иметь файл исходных данных или указывать его имя.) Настройка whatChild=0 сообщает наборы данных Xml записывает информацию для все из<информация о сущности-атрибуте><в файле inport-xml (Если есть какие-либо) . Он также распечатывает сводку справочной информации, включая все скачиваемые URL-адреса, перечисленные в файле inport-xml.
- Просмотрите всю эту информацию (Справочная информация, которая генерирует наборы данных Принты Xml) Посетить download-url (s) Чтобы попытаться найти исходный файл данных (s) . Если вы можете найти его (их) скачать (их) в каталог, доступный дляERDDAP. (Если вы не можете найти какие-либо исходные файлы данных, нет смысла продолжать.)
- Run Generate скачать Наборы данных Снова XML. Если исходный файл данных соответствует одному из файлов inport-xml<информация о сущности-атрибуте><Сущность>, указать, какой ребенок= Число этой организации (Например, 1, 2, 3, ...) .ERDDAP™будет пытаться сопоставить имена столбцов в файле исходных данных с именами в информации об объекте и предложит принять/отклонить/исправить любые расхождения. Или, если файл inport-xml не имеет<информация о сущности-атрибуте><Сущность>, указать, какой ребенок = 0.
- В кускеdatasets.xmlПроизводитель: GenerateDatasets Xml, revise [глобальный]<addAttributes> (#глобальные атрибуты) по мере необходимости/желания.
- В кускеdatasets.xmlЭто сделано GenerateDatasetsXml, добавьте/пересмотрите [<dataVariable> (#datavariable) информацию по мере необходимости/желания для описания каждой из переменных. Убедитесь, что вы правильно определили каждую переменную. [править]<sourceName> (#sourcename) (Как видно из источника) , [править]<destinationName> (#назначение) (которые имеют больше ограничений, чем разрешенные персонажи.sourceName) , [править]<единицы> (#единицы) (Особенно если это апеременная времени или метки временигде необходимо указать формат) и [править]<missing\_value> (#missing_value) ,
- Когда вы близки к завершению, неоднократно используйтеDasDdsинструмент для быстрого определения того, является ли описание набора данных действительным и появится ли набор данных вERDDAP™Как ты хочешь.
Было бы здорово, если бы группы, использующие InPort для документирования своих наборов данных, также использовали быERDDAP™Чтобы сделать реальные данные доступными:
- ERDDAP™Это решение, которое можно использовать прямо сейчас, чтобы вы могли выполнить его.NOAA?Публичный доступ к результатам исследований (ПАРР) требованияПрямо сейчас, а не в какое-то неопределенное время в будущем.
- ERDDAP™Это делает данные доступными для пользователей, а не только метаданные. (Что такое метаданные без данных?)
- ERDDAP™Поддерживает метаданные (В частности, единицы переменных) В отличие от некоторых других рассматриваемых серверов данных. (Чем хороши данные без метаданных?) Использовать программное обеспечение, которое не поддерживает метаданные, означает приглашать данные к неправильному пониманию и неправильному использованию.
- ERDDAP™Это бесплатное программное обеспечение с открытым исходным кодом, в отличие от некоторых других рассматриваемых программ. Постоянное развитиеERDDAP™Уже оплачено. ПоддержкаERDDAP™Пользователи свободны.
- ERDDAPВнешний вид может быть легко настроен, чтобы отразить и выделить вашу группу. (неERDилиERDDAP) .
- ERDDAP™предлагает последовательный способ доступа ко всем наборам данных.
- ERDDAP™Он может считывать данные из многих типов файлов данных и реляционных баз данных.
- ERDDAP™Они могут иметь дело с большими наборами данных, включая наборы данных, где исходные данные находятся во многих файлах данных.
- ERDDAP™может записывать данные во многие типы файлов данных по запросу пользователя, включая типы файлов научных данных, такие как netCDF, ESRI .csv иODV .txt.
- ERDDAP™может создавать пользовательские графики и карты подмножеств данных на основе спецификаций пользователя.
- ERDDAP™может иметь дело с наборами данных, не относящихся к данным, такими как коллекции изображений, в идео или аудиофайлов.
- ERDDAP™Он был установлен и использован вБолее 60 учреждений по всему миру.
- ERDDAP™является одним из серверов данных, рекомендуемых для использования внутриNOAAвNOAAПроцедурная директива о доступе к даннымВ отличие от других рассматриваемых программ.
- ERDDAP™является продуктомNMFS/NOAAИспользуя его внутриNMFSиNOAAОн должен быть предметом гордости дляNMFSиNOAA.
Пожалуйста, дайтеERDDAP™Попробуй. Если вам нужна помощь, пожалуйста, оставьте сообщение вERDDAP™Группа Google.
AddFillValueАтрибуты
Этот специальный вариант EDDType не является типом набора данных. Это инструмент, который может добавлять атрибуты \_FillValue к некоторым переменным в некоторых наборах данных. Видишь?AddFillValueАтрибуты.
Найти дубликаты Время
Этот специальный вариант EDDType не является типом набора данных. Вместо этого он сообщает наборы данных Xml для поиска по коллекции сетчатых.nc (связанный) Файлы для поиска и распечатки списка файлов с дублирующими значениями времени. Когда он смотрит на временные значения, он преобразует их из исходных единиц в"seconds since 1970-01-01"В случае, если разные файлы используют разные строки блоков. Вы должны предоставить стартовый каталог (с или без клещей) , имя файла регулярное выражение (Например, .\*\.nc ) и имя переменной времени в файлах.
слияние
Этот специальный вариант EDDType не является типом набора данных. Вместо этого он сообщает наборы данных Xml для печатислияниеподобная распечатка одной.nc,.ncмл, или.hdfФайл. Он использует netcdf-java.NCdumpЭто более ограниченный инструмент, чем C-версия NCdump. Если вы используете эту опцию, GenerateDatasetsXml попросит вас использовать один из вариантов: «-h» (заголовок) "-с" (координаты vars) "Вальс" (по умолчанию) , "-v var1;var2", "-v var1" (0,0:10,0:20) ". Это полезно, потому что без ncdump трудно понять, что находится в одном месте..nc,.ncмл, или.hdfфайл и, таким образом, какой EDDType вы должны указать для GenerateDatasets Хмл. Для одного.ncфайл мл, это напечатает вывод ncdump для результата.ncИзменения файла мл, применяемые к базовому.ncили.hdfФайл.
DasDds
- DasDds Программа командной строки, которую вы можете использовать после того, как вы создали первую попытку XML для нового набора данных.datasets.xml. С помощью DasDds вы можете многократно тестировать и совершенствовать XML. При использовании программы DasDds:
- В Windows, когда вы впервые запускаете DasDds, вам нужно отредактировать DasDds. bat файл с текстовым редактором, чтобы изменить путь к java. Файл exe, чтобы Windows могла найтиJava.
- DasDds просит васdatasetIDДля набора данных, над которым вы работаете.
- DasDds пытается создать набор данныхdatasetID.
- DasDds вс егда печатает множество диагностических сообщений. Если вы используете "DasDds -verbose", DasDds будет печатать больше диагностических сообщений, чем обычно.
- Для безопасности DasDds всегда удаляет всю кэшированную информацию о наборе данных. (файлы) Для набора данных, прежде чем пытаться создать набор данных. Это эквивалентно установлениюжесткий флагТаким образом, для агрегированных наборов данных вы можете временно настроить файл NameRegex, чтобы ограничить количество файлов, которые находит конструктор данных.
- Если набор данных не загружается (по какой бы то ни было причине) DasDds остановится и покажет вам сообщение об ошибке для первой обнаруженной ошибки.
Не пытайтесь угадать, в чем может быть проблема. Внимательно прочитайте сообщение.
При необходимости прочитайте предыдущие диагностические сообщения, чтобы найти больше подсказок и информации. - Измените набор данных XML, чтобы попытаться решить эту проблему.
И пусть DasDds снова попытаются создать набор данных. - Если вы неоднократно решаете каждую проблему, вы в конечном итоге решите все проблемы.
и набор данных будет загружаться.
- Все выходы DasDds (диагностика и результаты) написаны на экране и BigParent Директория /logs/DasDds.log.
- Если DasDds может создать набор данных, то DasDds покажет вам.das (Структура атрибутов набора данных) ,.dds (Описатель набора данных Структура) иПробелы во времени (временные промежутки) информацию для набора данных на вашем экране и запишите их на BigParent Директория /logs/DasDds.out.
- Часто вам нужно внести небольшие изменения в XML набора данных, чтобы очистить метаданные набора данных и перезапустить DasDds.
Бонус Инструмент третьей стороны:ERDDAP- кремень
ERDDAP-lint - это программа от Ро ба Фуллера и Адама Лидбеттера из Ирландского института морской пехоты, которую вы можете использовать для улучшения метаданных.ERDDAP™наборы данных.ERDDAP-lint "содержит правила и простое статическое веб-приложение для проведения некоторых тестов проверки против вашегоERDDAP™Сервер. Все тесты проводятся в веб-браузере". Как будто[Инструмент Unix/Linux](https://en.wikipedia.org/wiki/Lint_(software)Вы можете изменить существующие правила или добавить новые. Видишь?ERDDAP- кременьЗа дополнительной информацией.
Этот инструмент особенно полезен для наборов данных, которые вы создали некоторое время назад и теперь хотите обновить свои текущие настройки метаданных. Ранние версии GenerateDatasets Xml не приложила никаких усилий для создания глобальной сети.creator\_name,creator\_emailСоздатель_тип, илиcreator\_urlметаданные. Вы можете использоватьERDDAP- идентифицировать наборы данных, в которых отсутствуют эти атрибуты метаданных.
Спасибо Робу и Адаму за то, что создали этот инструмент и сделали его доступным для всех.ERDDAP™сообщество.
Основная структура этогоdatasets.xmlФайл
Необходимые и необязательные теги, разрешенные вdatasets.xmlфайл (Сколько раз они могут появляться) показаны ниже. На практике вашdatasets.xmlУ них будет много<теги dataset> и используйте только другие теги внутри<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. Для этого необходимо использовать SAX-парсер.<Использование SaxParser>Правда</useSaxParser> в setup.xml. Это позволяет записывать каждый набор данных в свой файл, а затем включать их все в основной файл.datasets.xmlповторно использовать части определений набора данных или и то, и другое. Если вы хотите увидеть пример,EDDTestDataset.javaXInclude для повторного использования переменных определений.
Заметки
Работая сdatasets.xmlФайл явля ется нетривиальным проектом. Пожалуйста, внимательно прочитайте все эти заметки. После того, как вы выберететип набора данныхПожалуйста, внимательно прочитайте подробное описание.
Выбор типа набора данных
В большинстве случаев есть только одинERDDAP™Тип набора данных, который подходит для данного источника данных. В некоторых случаях (например,.ncфайлы) Есть несколько вариантов, но обычно один из них определенно лучше. Первое и самое важное решение, которое вы должны принять: целесообразно ли рассматривать набор данных как группу многомерных массивов. (Если так, то посмотритеEDDGridТипы наборов данных) или в виде таблицы данных, подобной базе данных (Если так, то посмотритеТипы наборов данных EDDTable) .
Обслуживание данных как есть
Обычно нет необходимости изменять источник данных. (Например, конвертировать файлы в другие типы файлов) так чтоERDDAP™Может служить. Одно из предположений оERDDAP™Источник данных будет использоваться как есть. Обычно это работает хорошо. Некоторые исключения:
- Реляционные базы данных и Кассандра -ERDDAP™Он может обслуживать данные непосредственно из реляционных баз данных и Cassandra. Но из-за проблем с безопасностью, балансировкой нагрузки и производительностью вы можете настроить другую базу данных с теми же данными или сохранить эти данные.NetCDFv3.ncФайлы и иметьERDDAP™обслуживать данные из нового источника данных. Видишь?EDDTable FromDatabaseиEDDTable From Кассандра.
- Не поддерживаемые источники данных -ERDDAP™Может поддерживать большое количество типов источников данных, но мир заполнен 1000-ми годами. (миллионов?) Различные источники данных (В частности, структуры файлов данных) . ЕслиERDDAP™Не поддерживает источник данных:
- Если источником данных являетсяNetCDF .ncФайлы, которые вы можете использоватьNcMLизменять файлы данных на лету или использоватьNCOпостоянно изменять файлы данных.
- Вы можете записать данные в тип источника данных, которыйERDDAP™Поддержка.NetCDF-3.ncФайлы являются хорошей общей рекомендацией, потому что они являются двоичными файлами.ERDDAP™Можно читать очень быстро. Для табличных данных рассмотрите возможность хранения данных в коллекции.ncФайлы, которые используютCF Дискретная геометрия выборки (DSG) Структуры данных Ragged Array и так могут обрабатыватьсяERDDAP?EDDTable FromNcCFFiles). Если они логически организованы (Каждый с данными для куска пространства и времени) ,ERDDAP™Они могут быстро извлекать из них данные.
- Вы можете запросить поддержку этого источника данных.ERDDAP™По электронной почте Крис. Джон на noaa.gov.
- Вы можете добавить поддержку этого источника данных, написав код для его обработки самостоятельно. Видишь?тотERDDAP™Руководство программиста
- Скорость.ERDDAP™Они могут считывать данные из одних источников гораздо быстрее, чем из других. Например, чте ниеNetCDFv3.ncСчитывание файлов ASCII происходит медленнее. Если есть большой (1000) или огромный (10 000) количество исходных файлов данных,ERDDAP™Они будут реагировать на запросы данных медленно. Обычно разница не заметна для людей. Однако, если вы думаетеERDDAP™медленный для данного набора данных, вы можете решить проблему, написав данные для более эффективной настройки (обычно: несколько, хорошо структурированных,NetCDFv3.ncфайлы) . Для табличных данных см.Этот совет.
подсказка
Часто проще создать XML для набора данных, сделав копию рабочего описания набора данных в dataset.xml, а затем изменив его.
Кодирование специальных символов
С тех порdatasets.xmlXML-файл, который вы должныи кодировать"&",<", и ">" в любом содержании как "&",<", и ">". Неправильно:<Название Время и приливы</название> Правильно:<Название Time & - Приливы</название>
XML не терпит синтаксических ошибок
После редактирования файла dataset.xml рекомендуется проверить, что результатХорошо сформированный XMLпутем вставки текста XML в XML-проверку какxmlvalidation.
Устранение неполадок Советы
- Другие способы диагностики проблем с наборами данных
Помимо двух основныхИнструменты, - log.txtЭто лог-файл со всемиERDDAPДиагностические сообщения.
- TheЕжедневный отчетимеет больше информации, чем страница статуса, включая список наборов данных, которые не загружались, и исключения (ошибки) Они генерируются.
- TheСтраница статусаЭто быстрый способ проверитьERDDAPстатус от любого веб-браузера. Он включает в себя список наборов данных, которые не загружались. (Хотя и не соответствующие исключения) Задачи и задачиСтатистика (показать прогрессEDDGridКопияиEDDTableCopyнаборы данных и любыеEDDGridИз материаловилиEDDTable Из материаловнаборы данных, которые используюткэш FromUrl (Но не кэш SizeGB) ) .
- Если вы застряли, посмотрите нашРаздел о дополнительной поддержке.
Специальные переменные
- Долгота, широта, высота (или глубина) и время (LLAT) переменный destinationNameОни особенные.
- В целом:
- Переменные LLAT известныERDDAP™Если переменная оси (дляEDDGridнаборы данных) переменная данных (Для наборов данных EDDTable) destinationNameэто «долгота», «широта», «высота», «глубина», или"time".
- Мы настоятельно рекомендуем вам использовать эти стандартные имена для этих переменных, когда это возможно. Ни один из них не требуется. Если вы не используете эти переменные имена,ERDDAP™Они не признают их значения. Например, переменные LLAT обрабатываются специально с помощью Make A Graph. ( datasetID граф) Если переменная оси X является «долготой», а переменная оси Y — «широтой», вы получите карту. (использование стандартной проекции, а также маски, политических границ и т.д.) Вместо графа.
- ERDDAP™автоматически добавит много метаданных в переменные LLAT; (Например, "ioos\_category","единицы", а также несколько связанных со стандартами атрибутов, таких как "\_CoordinateAxisType") .
- ERDDAP™автоматически будет добавлять множество глобальных метаданных, связанных со значениями LLAT выбранного подмножества данных; (Например, "геопространственный_lon_min") .
- Клиенты, которые поддерживают эти стандарты метаданных, смогут использовать добавленные метаданные для размещения данных во времени и пространстве.
- Клиентам будет проще генерировать запросы, которые включают переменные LLAT, потому что имена переменных одинаковы во всех соответствующих наборах данных.
- Для переменной «долгота» и переменной «широта»:
- ИспользуйтеdestinationNames «долгота» и «широта», только еслиединицыЭто градусы востока и севера соответственно. Если ваши данные не соответствуют этим требованиям, используйте разные имена переменных. (Например, x, y, lonRadians, latRadians) .
- Если у вас есть данные о долготе и широте, выраженные в разных единицах и, следовательно, с разными значениями.destinationNames, например, lonRadians и latRadians, Make a Graph ( datasetID граф) Сделаем графики (Например, временные ряды) Вместо карт.
- Для переменной «высота» и переменной «глубина»:
- ИспользуйтеdestinationName«Высота» для определения расстояния данных над уровнем моря (Положительные = «высшие» значения) . Вы можете использовать «высоту» для расстояний ниже уровня моря, если значения отрицательны ниж е уровня моря (или если вы используете, например, [править]<Att name=""scale\_factor"тип="int">- 1 1</att> (#scale-фактор) Преобразование значений глубины в значения высоты.
- ИспользуйтеdestinationName"глубина" для определения расстояния данных ниже уровня моря (Положительные = "низовые" значения) .
- Набор данных может не иметь переменных «высота» и «глубина».
- Для этих переменных именединицыдолжны быть «м», «метр» или «метры». Если единицы отличаются (Например, фетомы) Вы можете использовать [править]<Att name=""scale\_factor" некоторые ценность </att> (#scale-фактор) и<Att name="units">meters</att> (#единицы) Преобразовать единицы в метры.
- Если ваши данные не соответствуют этим требованиям, используйте другойdestinationName (Например, над землей, расстояние Внизу) .
- Если вы знаете вертикальный CRS, пожалуйста, укажите его в метаданных, например, "EPSG:5829" (мгновенная высота над уровнем моря) "EPSG:5831" (мгновенная глубина ниже уровня моря) Или "EPSG:5703" (высота NAVD88) .
- Для"time"переменная:
- ИспользуйтеdestinationName "time"только для переменных, которые включают всю дату + время (Дата, если это все, что есть) . Если, например, существуют отдельные столбцы для даты и времени OfDay, не используйте имя переменной."time".
- Видишь?единицыдля получения дополнительной информации об атрибутах единиц времени и переменных времени.
- Временная переменная и связанные с нейвремя Штамповые переменныеОни уникальны тем, что всегда преобразуют значения данных из временного формата источника. (Что бы это ни было) в численное значение (секунды с 1970-01-01T00:00:00Z) или струнное значение (ISO 8601:2004 (Е) формат) В зависимости от ситуации.
- Когда пользователь запрашивает данные времени, он может запросить их, указав время в качестве числового значения. (секунды с 1970-01-01T00:00:00Z) или струнное значение (ISO 8601:2004 (Е) формат) .
- ERDDAP™имеет полезность дляПреобразовать числовой Время в/из струнного времени.
- Видишь?КакERDDAPСделки со временем.
Почему только две основные структуры данных?
- Поскольку клиентам-людям и компьютерным клиентам трудно иметь дело со сложным набором возможных структур набора данных,ERDDAP™использует только две основные структуры данных:
- асетчатая структура данных (Например, для спутниковых данных и данных моделей) и
- аСтруктура табличных данных (Например, для буя in-situ, станции и данных траектории) .
- Конечно, не все данные могут быть выражены в этих структурах. Таблицы, в частности, являются очень гибкими структурами данных. (Посмотрите на успех программ реляционных баз данных) .
- Это облегчает создание запросов данных.
- Это делает ответы на данные простой структурой, что облегчает обслуживание данных в более широком спектре типов стандартных файлов. (Часто они поддерживают простые структуры данных.) . Это главная причина, по которой мы создалиERDDAP™сюда.
- Это, в свою очередь, облегчает нам (или кто-либо) Написать клиентское программное обеспечение, которое работает со всемиERDDAP™наборы данных.
- Это облегчает сравнение данных из разных источников.
- Мы знаем, что если вы привыкли работать с данными в других структурах данных, вы можете изначально подумать, что этот подход является упрощенным или недостаточным. Но все структуры данных имеют компромиссы. Никто не идеален. Даже структуры do-it-all имеют свои недостатки: работа с ними сложна, и файлы могут быть написаны или прочитаны только с помощью специальных библиотек программного обеспечения. Если вы принимаетеERDDAPПодход достаточно, чтобы попытаться работать с ним, вы можете обнаружить, что он имеет свои преимущества. (Поддержка нескольких типов файлов, которые могут содержать ответы данных) . TheERDDAP™слайд-шоу (В частности,Структуры данных сливаются) Много говорят по этим вопросам.
- И даже если этот подход кажется вам странным, большинствоERDDAP™Клиенты никогда не заметят — они просто увидят, что все наборы данных имеют хорошую простую структуру, и они будут благодарны за то, что они могут получать данные из самых разных источников, возвращаемых в самых разных форматах файлов.
Размеры
- Что, если переменные сетки в исходном наборе данных не имеют одинаковых переменных оси?
вEDDGridВсе переменные данных должны использоваться (доля) Все переменные оси. Таким образом, если исходный набор данных имеет некоторые переменные с одним набором измерений и другие переменные с другим набором измерений, вам придется сделать два набора данных.ERDDAP. Например, вы можете сделать одинERDDAP™Оригинальное название: Some Title (на поверхности) "для удержания переменных, которые просто используют\[время\]\[широта\]\[долгота\]Размеры и сделать другойERDDAP™Оригинальное название: Some Title (на глубинах) "для удержания переменных, которые используют\[время\]\[высота\]\[широта\]\[долгота\]. Или, возможно, вы можете изменить источник данных, чтобы добавить измерение с одним значением. (Например, высота = 0) Чтобы переменные были последовательными.
ERDDAP™не обрабатывает более сложные наборы данных (Например, модели, которые используют сетку треугольников.) Хорошо. Вы можете использовать эти наборы данных вERDDAP™путем создания двух или более наборов данных вERDDAP™ (чтобы все переменные данных в каждом новом наборе данных имели одинаковый набор переменных оси) Но это не то, чего хотят пользователи. Для некоторых наборов данных вы можете рассмотреть возможность создания обычной сетчатой версии набора данных и предложить ее в дополнение к исходным данным. Некоторые клиентские программы могут работать только с обычной сетью, поэтому, делая это, вы получаете дополнительных клиентов.
Проектируемые сетчатые данные
Некоторые сетевые данные имеют сложную структуру. Спутниковый уровень 2 ("Вдоль трассы") Данные не используют простой прогноз. Модели (и другие) Часто работает с сетчатыми данными по различным нецилиндрическим проекциям. (Например, конический, полярный стереографический, треугольный) или в неструктурированных сетях (Более сложная структура данных) . Некоторые конечные пользователи хотят, чтобы эти данные были такими, как есть, поэтому нет потери информации. Для таких клиентов,ERDDAP™Данные могут служить, как есть, только еслиERDDAP™Администратор разбивает исходный набор данных на несколько наборов данных, причем каждая часть включает переменные, которые разделяют одни и те же переменные оси. Да, это кажется странным для вовлеченных людей, и это отличается от большинства других.OPeNDAPСерверы. НоERDDAP™Особое внимание уделяется обеспечению доступности данных во многих форматах. Это возможно потому, чтоERDDAP™требует более однородной структуры данных. Хотя это немного неловко (т.е. отличается от ожидаемого) ,ERDDAP™Может распространять прогнозируемые данные.
\[Да,ERDDAP™Они могут иметь более свободные требования к структуре данных, но сохраняют требования к выходным форматам. Но это приведет к путанице среди многих пользователей, особенно новичков, поскольку многие, казалось бы, действительные запросы на данные с различными структурами будут недействительными, потому что данные не будут вписываться в тип файла. Мы продолжаем возвращаться к дизайну системы.\]
Некоторым конечным пользователям нужны данные в lat lon цилиндрической проекции, такой как Equirectangular / plate carrée или Mercator, для удобства использования в различных ситуациях. В таких случаях мы поощряемERDDAP™Администратор использует другое программное обеспечение (NCO?Matlab? Р? IDV? ...?) Перепроецировать данные на географическую (Трехугольная проекция / пластина carrée) или другой цилиндрической проекции и служат этой форме данных вERDDAP™как другой набор данных. Это похоже на то, что делают люди, когда преобразуют данные спутникового уровня 2 в данные уровня 3. Одним из таких инструментов являетсяNCOкоторый предлагает варианты расширения для регидирования да нных.
ГИС и перепроектирование данных
Поскольку ГИС-мир часто ориентирован на карты, ГИС-программы обычно предлагают поддержку перепроектирования данных, т.е. построения данных на карте с другой проекцией.
В настоящее времяERDDAP™Не имеет инструментов для репроектирования данных. Вместо этого мы рекомендуем использовать внешний инструмент для создания варианта набора данных, где данные были перепроецированы из первоначальной формы на прямоугольную форму. (широта долготы) подходящий дляERDDAP.
По нашему мнению, CF/DAPМир немного отличается от мира ГИС и работает на несколько более низком уровне.ERDDAP™Это отражается. В общем,ERDDAP™Предназначен для работы в основном с данными (Не карты) И не хочет меняться (Например, репроект) Эти данные. ДляERDDAP™, сетчатые данные часто/обычно/предпочтительно связаны со значениями lat lon и цилиндрической проекцией, а не с значениями x,y некоторой проекции. В любом случае,ERDDAP™Он ничего не делает с проекцией данных; он просто передает данные через, как и его текущая проекция, на теорию, что репроекция является значительным изменением данных.ERDDAP™Они не хотят быть вовлеченными в значительные изменения. Кроме того, последующие пользователи могут наивно перепроектировать данные снова, что будет не так хорошо, как просто сделать одну репроекцию. (Так что, еслиERDDAP™Администратор хочет предложить данные в другом прогнозе, отлично; просто перепроектируйте данные в автономном режиме и предложите их в виде другого набора данных.ERDDAP. Множество спутниковых наборов данных предлагаются в качестве так называемого уровня 2. (полоса) и как уровень 3 (Двухугольная проекция) версии.) КогдаERDDAP™Делает карты (напрямую или черезWMSили KML) ,ERDDAP™В настоящее время предлагается делать карты только с проекцией Equirectangular / plate carrée, которая, к счастью, принята большинством картографических программ.
Мы поощряемERDDAP™администраторы используют другое программное обеспечение (NCO?Matlab? Р? IDV? ...?) Перепроецировать данные на географическую (Трехугольная проекция / пластина carrée) или другой цилиндрической проекции и служат этой форме данных вERDDAP™как другой набор данных. Это похоже на то, что делают люди, когда преобразуют данные спутникового уровня 2 в данные уровня 3. Одним из таких инструментов являетсяNCOкоторый предлагает варианты расширения для регидирования данных.
Мы надеемся, чтоERDDAP™В будущем будут созданы встроенные инструменты для создания карт с другими проекциями. Мы также надеемся на улучшение связей с ГИС в будущем. (кроме текущегоWMSобслуживание) . Страшно, что в этом "современном" мире связи между КФ/DAPМир и ГИС все еще очень слабы. Обе эти вещи находятся в списке дел. (Если вы хотите помочь, особенно с подключениемERDDAP™MapServer, пожалуйста, напишите Крису. Джон на noaa.gov.)
Типы данных
ERDDAP™Поддержива ет следующие типы данных (имена являются деликатными;'u'Префикс означает «неподписанный»; число многих имен в других системах — это число битов.) :
байт
- байт подписанные целочисленные значения с диапазоном от -128 до 127. В других системах это иногда называют int8. Это называется «tinyint» от SQL и Cassandra. ERDDAP™конвертироватьбулевыйиз некоторых источников (Например, SQL и Cassandra) в байтах вERDDAP™с значением 0 = ложное, 1 = истинное и 127 =missing\_value.
убайт
- убайт имеет неподписанные целые значения с диапазоном от 0 до 255. В других системах это иногда называют uint8.
короткий
- короткий имеет целочисленные значения с диапазоном от -32768 до 32767. В других системах это иногда называют int16. Это называется «smallint» от SQL и Cassandra.
низкорослый
- низкорослый имеет неподписанные целые значения с диапазоном от 0 до 65535. В других системах это иногда называют uint16.
инт
- инт подписанные целочисленные значения с диапазоном от -2147483648 до 2147483647. В других системах это иногда называют int32. Это называется "целое число"|числовой (?) "по SQL" и "внутри" по Кассандре.
uint
- uint имеет неподписанные значения целого числа с диапазоном от 0 до 4294967295. В других системах это иногда называют uint32.
длинный
- длинный имеет подписанные целочисленные значения с диапазоном -9223372036854775808 до 9223372036854775807. В других системах это иногда называют int64. Это называется "бигинта"|числовой (?) "по SQL и "бигинту" Кассандры". Поскольку многие типы файлов не поддерживают длинные данные, их использование не рекомендуется. По возможности используйте двойной (см. ниже) .
улун
- улун имеет неподписанные целые числа с диапазоном от 0 до 18446744073709551615 В других системах это иногда называют uint64. Поскольку многие типы файлов не поддерживают данные, их использование не рекомендуется. По возможности используйте двойной (см. ниже) .
плавать
- плавать IEEE 754 плавает с диапазоном приблизительно +/- 3.402823466e+38. В других системах это иногда называют float32. Это называется "реальным".|плавать (?) |десятичный (?) |числовой (?) «SQL» и «Float» Кассандра. Особое значение NaN означает Не-число. ERDDAP™Преобразует положительные и отрицательные значения бесконечности в NaN.
двойной
- двойной IEEE 754 двойной с диапазоном приблизительно +/- 1,7976931348623157E+308. В других системах это иногда называют float64. Это называется «двойной точностью».|плавать (?) |десятичный (?) |числовой (?) "по SQL и "двойной" по Кассандре". Особое значение NaN означает Не-число. ERDDAP™Преобразует положительные и отрицательные значения бесконечности в NaN.
шар
- шар Одиночный, 2 байт (16-битный) Уникальный код UCS-2варьировать от\u0000 (#0) через\uffff (#65535) . \uffffОпределение не-характерно, аналогично двойному значению NaN. Использование char не рекомендуется, потому что многие типы файлов либо не поддерживают чары, либо поддерживают только 1-байтовые чары. (см. ниже) . Подумайте об использовании струн вместо этого. Пользователи могут использовать переменные char для создания графиков.ERDDAP™преобразует символы в их кодовый номер Unicode, который может использоваться в качестве числовых данных.
Струна
- Струна представляет собой последовательность 0 или более, 2 байта (16-битный) Unicode UCS-2 символы. ERDDAP™использует/интерпретирует 0-длинную строку как недостающее значение.ERDDAP™Он не поддерживает настоящую нулевую строку. Теоретическая максимальная длина струн составляет 2147483647 символов, но, вероятно, в разных местах существуют различные проблемы даже с несколько более короткими струнами. ИспользоватьERDDAPString for SQL's character, varchar, character varying, binary, varbinary, interval, array, multiset, xml, and any other database data type that doesn't fit cleanly with any otherERDDAP™Тип данных. ИспользоватьERDDAPСтруна для "текста" Кассандры и любого другого типа данных Кассандры, который не соответствует чисто ни одному другомуERDDAP™Тип данных.
ПередERDDAP™v2.10,ERDDAP™Он не поддерживал неподписанные целочисленные типы внутри и предлагал ограниченную поддержку в своих считывателях данных и авторах.
Ограничения типа данных
Вы можете думать оERDDAP™как система, которая имеет виртуальные наборы данных и которая работает путем считывания данных из источника набора данных во внутреннюю модель данных и записи данных в различные службы (например,(OPeN)DAP,WMS) и типы файлов в ответ на запросы пользователей.
- Каждый считыватель ввода поддерживает подмножество типов данных, которыеERDDAP™Поддержка. Читать данные вERDDAPВнутренние структуры данных не являются проблемой.
- Каждый автор вывода также поддерживает подмножество типов данных. Это проблема, потому чтоERDDAPНапример, нужно втиснуть длинные данные в типы файлов, которые не поддерживают длинные данные.
Ниже приведены объяснения ограничений (или нет) различных авторов и какERDDAP™занимается решением проблем. Такие осложнения являются неотъемлемой частьюERDDAPЦель - сделать разрозненные системы совместимыми.
АССИИ
- АССИИ (.csv,.tsvи т.д.) текстовые файлы -
- Все числовые данные записываются через представление струн. (с отсутствующими значениями данных, появляющимися в виде строк 0-длины) .
- ХотяERDDAP™правильно записывает длинные и длинные значения в текстовые файлы ASCII, многие читатели (Например, программы электронных таблиц) Они не могут правильно обращаться с длинными и длинными значениями и вместо этого преобразовывать их в двойные значения. (потеря точности в некоторых случаях) .
- Данные Char и String записываются через JSON Strings, которые обрабатывают все символы Unicode. (Примечательно, что «необычные» персонажи за пределами ASCII #127, например, евро-персонаж появляется как «\u20ac».) .
Джон
- Джон (.json,.jsonlCSVи т.д.) текстовые файлы -
- Все числовые данные записываются через е го струнное представление.
- Данные Char и String записываются как JSON Strings, которые обрабатывают все символы Unicode. (Примечательно, что «необычные» персонажи за пределами ASCII #127, например, евро-персонаж появляется как «\u20ac».) .
- Недостающие значения для всех типов числовых данных выглядят как нуль.
.nc3 Файлы
- .nc3 файла изначально не поддерживают неподписанные целочисленные типы данных. До CF v1.9 CF не поддерживал неподписанные целые типы. Чтобы справиться с этим,ERDDAP™2.10+ следует стандарту NUG и всегда добавляет атрибут «\_Unsigned» со значением «истинно» или «ложно», чтобы указать, являются ли данные из неподписанной или подписанной переменной. Все целочисленные атрибуты пишутся как подписанные атрибуты. (например, байт) с подписанными значениями (например, убайт)actual\_rangeАтрибут со значениями от 0 до 255, появляется как байтовый атрибут со значениями от 0 до -1 (обратное значение комплемента двух значений вне диапазона). Нет простого способа узнать, какие целочисленные атрибуты следует читать как неподписанные атрибуты.ERDDAP™Поддерживает атрибут «\_Unsigned» при чтении.nc3 файла.
- .nc3 файла не поддерживают длинные или длинные типы данных.ERDDAP™Это происходит путем временного преобразования их в двойные переменные. Двойники могут точно представлять все значения до +/- 9 007 199 254 740 992 Что составляет 253. Это несовершенное решение.UnidataОтказывается от незначительного обновления до.nc3 для решения этой и связанных с ней проблем, ссылаясь.nc4.4 (серьезное изменение) как решение.
- Спецификация CF (до v1.9) Он сказал, что поддерживает тип данных char, но неясно, предназначен ли char только в качестве строительных блоков char-массивов, которые фактически являются струнами. Вопросы к их списку рассылки давали только запутанные ответы. Из-за этих осложнений лучше всего избегать переменных шара.ERDDAP™Используйте струнные переменные, когда это возможно.
- Традиционно,.nc3 файла поддерживают только строки с кодировкой ASCII (7-битный, #0 - #127) персонажей. Нюг (иERDDAP) расширить (Начало 2017) путем включения атрибута "\_Encoding" со значением "ISO-8859-1" (Расширение ASCII, которое определяет все 256 значений каждого 8-битного символа.) или «UTF-8», чтобы указать, как кодируются данные строки. Другие кодировки могут быть законными, но не рекомендуется.
.nc4 Файлы
- .nc4 файла поддерживают всеERDDAPТипы данных.
Файлы NCCSV
Файлы NCCSV 1.0 не поддерживают неподписанные целые типы данных. NCCSV 1.1+ файлыПоддержка всех неподписанных целочисленных типов данных.
DAP
- (OPeN)DAP (.das, .dds, .asc ASCII файлы и .dods двоичные файлы) -
- (OPeN)DAPПравильно обрабатывает короткие, короткие, int, uint, плавающие и двойные значения.
- (OPeN)DAPимеет «байтовый» тип данных, который он определяет как неподписанный, в то время как исторически THREDDSERDDAP™Обработали «байт» как подписанный в их(OPeN)DAPуслуг. Чтобы справиться с этим лучше,ERDDAP™2.10+ следует стандарту NUG и всегда добавляет атрибут «\_Unsigned» со значением «истинно» или «ложно», чтобы указать, являются ли данные тем, чтоERDDAP™Звонок байт или убайт. Все байтовые и убайтовые атрибуты записываются как «байтовые» атрибуты с подписанными значениями (например, убайт).actual\_rangeАтрибут со значениями от 0 до 255, появляется как байтовый атрибут со значениями от 0 до -1 (обратное значение комплемента двух значений вне диапазона). Не существует простого способа узнать, какие «байтовые» атрибуты следует читать как атрибуты убайт.
- (OPeN)DAPне поддерживает подписанные или неподписанные долги.ERDDAP™Это происходит путем временного преобразования их в двойные переменные и атрибуты. Двойники могут точно представлять все значения до 9 007 199 254 740 992. Что составляет 253. Это несовершенное решение.OPeNDAP (организация) Отказывается от незначительного обновления доDAP2.0 для решения этой и связанных с ней проблем, ссылаясь наDAP4.4 (серьезное изменение) как решение.
- Потому что(OPeN)DAPне имеет отдельного типа данных и технически поддерживает только 1-байтовые символы ASCII; (#0 - #127) В строках переменные данных шара будут отображаться как строки длиной 1 символ в(OPeN)DAP.das, .dds и .dods ответы.
- Технически, это(OPeN)DAPСпецификация поддерживает только строки с символами, кодируемыми ASCII (#0 - #127) . Нюг (иERDDAP) расширить (Начало 2017) путем включения атрибута "\_Encoding" со значением "ISO-8859-1" (Расширение ASCII, которое определяет все 256 значений каждого 8-битного символа.) или «UTF-8», чтобы указать, как кодируются данные строки. Другие кодировки могут быть законными, но не рекомендуется.
Комментарии типа данных
- Из-за плохой поддержки длинных, ulong и char данных во многих типах файлов, мы не рекомендуем использовать эти типы данных в других форматах.ERDDAP. Когда это возможно, используйте двойной вместо длинного и длинного, и используйте струну вместо чар.
- Метаданные - потому что(OPeN)DAPРеакции .das и .dds не поддерживают длинные или длинные атрибуты или типы данных. (Вместо этого покажите их как двойники.) Вместо этого вы можете использоватьERDDAPтабличное представление метаданных, как видно изhttp.../erdap/ информация / datasetID .html веб-страница (Например, 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Метаданные доступны только для табличных наборов данных) которые п оддерживают все типы данных (В частности, длинный, улун и чар) .
Медиафайлы
Не все данные представляют собой массивы цифр или текстов. Некоторые наборы данных состоят из или включают медиафайлы, такие как изображения, аудио и видео файлы.ERDDAP™Он имеет некоторые специальные функции, которые облегчают пользователям доступ к медиафайлам. Это двухэтапный процесс:
- Сделайте каждый файл доступным через собственный URL-адрес, через систему, которая поддерживает запросы диапазона байтов. Самый простой способ сделать это - поместить файлы в каталог, которыйERDDAP™Имеет доступ. (Если они находятся в контейнере, как.zipфайл, разблокируйте их, хотя вы можете предложить.zipФайлы для пользователей тоже.) Затем сделайтеEDDTable FromFileNamesНабор данных, чтобы сделать эти файлы доступными черезERDDAP™В частности, черезERDDAP?"files"система.
Все файлы доступны через EDDTableFromFileNames иERDDAP?"files"Поддержка системыЗапросы на диапазон байтов. Обычно, когда клиент (Например, браузер) Делает запрос на URL, получает весь файл в качестве ответа. Но при запросе диапазона байтов запрос указывает диапазон байтов из файла, и сервер возвращает только эти байты. Это актуально здесь, потому что аудио- и видеоплееры в браузерах работают только в том случае, если доступ к файлу осуществляется через байтовые запросы.
Необязательно: Если у вас есть более одного набора данных с соответствующими медиафайлами, вы можете сделать только один EDDTableFromFileNames, который имеет подпапку для каждой группы файлов. Преимущество заключается в том, что когда вы хотите добавить новые медиафайлы для нового набора данных, все, что вам нужно сделать, это создать новую папку и поместить файлы в эту папку. Папка и файлы будут автоматически добавлены в набор данных EDDTableFromFileNames.
- Необязательно: Если у вас есть набор данных, который включает ссылки на мультимедийные файлы, добавьте его вERDDAP. Например, у вас может быть файл .csv с строкой для каждого раза, когда кто-то видел кита, и стол бец, который включает имя файла изображения, связанного с этим наблюдением. Если имя файла изображения является только именем файла, например, Img20141024T192403Z, а не полным URL-адресом, то вам нужно добавить:FileAccessBase Url и/или fileAccessSuffixатрибуты метаданных для этогоdataVariableкоторый определяет базовый URL и суффикс для этих имен файлов. Если вы сделали файлы доступными через EDDTableFromFileNames, URL будет в форме. основание /erddap/файлы datasetID / Например,
<att name="fileAccessBaseUrl">*someBaseURL*</a>
<att name="fileAccessSuffix">.png</a>
Если есть а.zipили другой файл контейнера со всеми медиафайлами, связанными с переменной данных, мы рекомендуем вам также сделать этот файл доступным для пользователей. (См. шаг 1 выше) Затем отождествляем его сFileAccessArchive Урлатрибут.
\[Начинать сERDDAP™v1.82\]Если вы с делаете первый шаг выше (или оба шага) Когда пользователь видитERDDAP™ "files"Система для этого набора данных (или просит видеть подмножество набора данных через.htmlTableЕсли вы сделали второй шаг) ,ERDDAP™Отобразится значок «?» слева от имени файла. Если пользователь парит над этим значком, он увидит всплывающее окно, показывающее изображение, или аудиоплеер, или видеоплеер. Браузеры поддерживают ограниченное количество типов
- изображение (обычно .gif, .jpg и .png) ,
- звук (обычно .mp3, .ogg и .wav) и
- видеофайлы (Обычно это .mp4, .ogv и . веб) .
Поддержка варьируется в зависимости от различных версий различных браузеров на разных операционных системах. Поэтому, если у вас есть выбор, какой тип файла предложить, имеет смысл предложить эти типы.
Или, если пользователь нажимает на имя файла, отображаемое наERDDAP™Веб-страница, их браузер покажет изображение, аудио или видео файл в качестве отдельной веб-страницы. Это в основном полезно для просмотра очень большого изображения или видео, масштабированного до полного экрана, вместо всплывающего окна.
Работа с файла ми AWS S3
Веб-служба Amazon (AWS) является продавцомоблачный сервисуслуг.S3Это система хранения объектов, предлагаемая AWS. Вместо иерархической системы каталогов и файлов традиционной файловой системы (Как жесткий диск в вашем ПК) , S3 предлагает только «ведра», которые содержат «объекты». (Мы позвоним им."files") .
Для файлов ASCII (Например, .csv) ,ERDDAP™Может работать с файлами в ведрах напрямую. Единственное, что вам нужно сделать, это указать<fileDir> для набора данных с использованием определенного формата для ведра AWS, например, https://bucketName.s3.aws-region.amazonaws.com/subdirectory/ . Вы не должны использовать<cacheFromUrl>. Смотрите ниже для деталей.
Но для бинарных файлов (например,.nc.grib, .bufr, и.hdfфайлы) Вы должны использовать<cacheFromUrl> система, описанная ниже.ERDDAPNetcdf-java (которыйERDDAP™Использование для чтения данных из этих файлов) и другое программное обе спечение для научных данных предназначено для работы с файлами в традиционной файловой системе, которая предлагаетуровень блоковДоступ к файлам (который позволяет читать фрагменты файла) S3 предлагает толькофайловый уровень (объект) Доступ к файлам (Что позволяет читать весь файл) . AWS предлагает альтернативу S3Упругий Block Store (ЭБС) ), которая поддерживает доступ к файлам на уровне блоков, но стоит дороже, чем S3, поэтому редко используется для массового хранения больших объемов файлов данных. (Когда люди говорят, что хранят данные в облаке (S3) Это дешево, обычно это сравнение яблок с апельсинами.)
Ведра S3
Содержимое ведра. Ключи. Объекты, ограничители.
Технически, ведра S3 не организованы в иерархическую файловую структуру, как файловая система на компьютере. Ведра содержат только «объекты». (файлы) Каждый из них имеет «ключ». (имя) . Примером ключа в этом ведре Noaa-goes17 является
ABI-L1b-RadC/2019/235/22/OR\\_ABI-L1b-RadC-M6C01\\_G17\\_s20192352201196\\_e20192352203569\\_c20192352204013.nc
URl для этого объекта является
AWS поддерживает небольшие изменения в построении этого URL-адреса.ERDDAP™Для этого нужен конкретный формат:
https://bucketName.s3.region.amazonaws.com/key
Обычно, как и в этом примере, ключевые имена выглядят как иерархический путь плюс имя файла, но технически это не так. Поскольку он является общим и полезным,ERDDAP™Рассматривает ключи с /'s, как если бы они были иерархическим путем плюс имя файла, и эта документация будет относиться к ним как таковым. Если ключи ведра не используются / (например, ключ, похож ий на ключ)
ABI-Lib.2018.052.22.OR\_ABI-L1b-RadM2-M3C10\_G16\_20180522247575), далееERDDAP™Мы будем рассматривать весь ключ как длинное имя файла.
Частные vs Публичные ведра - Администратор ведра S3 может сделать ведро и его содержимое публичным или частным. Если публичный, любой файл в корзине может быть загружен любым, кто использует URL для файла. У Amazon естьОткрытые данныеПрограмма, в которой размещены общедоступные наборы данных (включая данные изNOAANASA и USGS) бесплатно и не взимает плату за скачивание файлов из этих ведер. Если ведро является частным, файлы в ведре доступны только авторизованным пользователям, и AWS взимает плату. (Обычно платит владелец ведра.) Загрузка файлов на не-AWS S3 компьютер.ERDDAP™Может работать с данными в государственных и частных ведрах.
Сертификаты AWS
Чтобы сделать так, чтобыERDDAP™Вы можете читать содержимое частных ведер, вам нужны учетные данные AWS, и вам нужно хранить файл учетных данных в стандартном месте.ERDDAP™Вы можете найти информацию. Посмотреть AWS SDKJava2.x документация:Установите учетные данные по умолчанию. (Возможность хранить значения какJavaПараметры командной строки в\[кот\]/bin/setenv.sh может быть хорошим вариантом.)
AWS /файлы
- /files/ Системы TheERDDAP™ /файлы / системапозволяет пользователям загружать исходные файлы для набора данных. Мы рекомендуем включить его для всех наборов данных с исходными файлами, потому что многие пользователи хотят загрузить исходные файлы.
- Если файлы находятся в частном ведре S3, запрос пользователя на загрузку файла будет обработанERDDAP™, который будет считывать данные из файла, а затем передавать их пользователю, тем самым увеличивая нагрузку на ваш файл.ERDDAP™, используя входящую и исходящую полосу пропускания и делая вас (тотERDDAP™администратор) Оплатить сбор за передачу данных в AWS.
- Если файлы находятся в открытом ведре S3, запрос пользователя на загрузку файла будет перенаправлен на URL-адрес AWS S3 для этого файла, поэтому данные не будут проходить через него.ERDDAP™Таким образом, уменьшая нагрузку наERDDAP. Если файлы находятся в открытых данных Amazon (свободный) Общественное ведро, затем вы (тотERDDAP™администратор) Вам не придется платить комиссию за выход данных в AWS. Таким образом, существует большое преимущество, обслуживающее данные от общественности. (не частный) S3 ведра и огромное преимущество в обслуживании данных от Amazon Open Data (свободный) Ведра.
ERDDAP™AWS S3 Buckets
ERDDAP™AWS S3 Buckets
К счастью, после долгих усилийERDDAP™Он имеет ряд функций, которые позволяют ему решать внутренние проблемы, связанные с доступом к файлам на уровне блоков S3:
- \[Отказ от ответственности: Работа с ведрами AWS S3 требует много дополнительной работы. AWS — это огромная экосистема сервисов и функций. Есть чему поучиться. Это требует времени и усилий, но это возможно. Будьте терпеливы, и у вас все получится. Посмотреть/просить о помощи
()Документация AWSСайты вродеСкачать Overflowи регулярной
ERDDAP™Варианты поддержки) если/когда вы застряли.\]
- Трудно даже узнать структуру каталога и имена файлов в ведре S3.ERDDAP™Есть решение этой проблемы: EDDTableFromFileNames имеет специальное приложение.\\(перенаправлено с «OnTheFly»)опция, которая позволяет вам создать набор данных EDDTableFromFileNames, который позволяет пользователям просматривать содержимое ведра S3 (скачать файлы) через набор данных"files"вариант. Есть одинПример этого ниже.
- ERDDAP™Может считывать данные извнешне сжатые файлы данных, так что это нормально, если файлы на S3 хранятся как.gz,.gzip,.bz2, .Z или другие типы файлов данных, сжатых извне, которые могут значительно (2 - 20X) сократить расходы на хранение файлов. Часто нет штрафа за использование сжатых извне файлов, поскольку время сохраняется за счет переноса меньшего файла из S3 в другой файл.ERDDAPпримерно ур авновешивает дополнительное время, необходимое дляERDDAP™Декомпрессия файла. Чтобы использовать эту функцию, вам просто нужно убедиться, что набор данных<ФайлNameRegex позволяет использовать тип сжатого файла (Например, путем добавления (|.gz) В конце Регекса) .
- Наиболее распространенный случай, когда у вас естьERDDAP™установленный на вашем компьютере для тестирования / разработки и где набор данных имеет двоичные файлы данных, которые хранятся как объекты в корзине S3, один из подходов к получению набора данныхERDDAP™Это:
-
Создайте каталог на вашем компьютере, чтобы хранить несколько тестовых файлов данных.
-
Загрузите два файла данных из источника в созданный вами каталог.
-
ИспользоватьГенерировать наборы данныхXmlЧтобы создать кусокdatasets.xmlдля набора данных на основе двух локальных файлов данных.
-
Убедитесь, что набор данных работает по желаниюDasDdsи/или ваш местныйERDDAP.
Следующие шаги делают копию этого набора данных (кто получит данные из ковша S3) На публикеERDDAP.
-
Копировать кусокdatasets.xmlДля набора данных вdatasets.xmlдля общественностиERDDAP™Это будет служить данным.
-
Создать каталог на публикеERDDAPлокальный жесткий диск для хранения кэша временных файлов. Каталог не будет использовать много дискового пространства (CacheSizeGB ниже) .
-
Изменить значение набора данных<тег fileDir>, чтобы он указывал на каталог, который вы только что создали (Даже если каталог пуст) .
-
Добавитькэш FromUrlтег, который определяет имя ковша набора данных и дополнительный префикс (т.е. директория) В конкретномS3 URL формат, которыйERDDAP™требует.
-
Добавить [<cacheSizeGB> (#cachefromurl) Тег к набору данных xml (Например, 10 является хорошим значением для большинства наборов данных.) рассказыватьERDDAP™Ограничить размер локального кэша (То есть, не пытайтесь кэшировать все удаленные файлы.) .
-
Посмотрите, работает ли это в обществе.ERDDAP. Отметим, что в первый разERDDAP™Загружает набор данных, на загрузку потребуется длительное время, посколькуERDDAP™Необходимо скачать и прочитать все файлы данных.
-
Если набор данных представляет собой огромную коллекцию огромных сетчатых файло в данных, это займет очень много времени и будет непрактичным. В некоторых случаях для сетчатых файлов данных,ERDDAP™Можно извлечь необходимую информацию (Например, точка времени для данных в сетчатом файле данных) От имени файла и избежать этой проблемы. Видишь?Агрегация через Файловые имена.
- необязательно (Но особенно для наборов данных EDDTable FromFiles) Вы можете добавитьnПотокиTag to the dataset чтобы сообщитьERDDAPиспользовать более 1 потока при ответе на запрос пользователя о данных. Это минимизирует последствия задержки, которая возникает, когдаERDDAP™читать файлы данных из (удаленный) AWS S3 вставляется в локальный кэш и (возможно) Декомпрессия их.
AWS 3 Открытые данные
Как частьNOAA?Программа Big Data,NOAAМы сотрудничаем с пятью организациями, включая AWS, чтобы изучить потенциальные преимущества хранения копий ключевых наблюдений и результатов моделей в облаке, чтобы позволить вычислять непосредственно данные без необходимости дальнейшего распространения. AWS включает наборы данных, которые он получаетNOAAв рамках своей программы по предоставлению публичного доступа к большой коллекцииОткрытые данные для AWS S3с любого компьютера, будь то Amazon (арендованный компьютер) Сеть AWS или собственный компьютер в любой сети. Приведенный ниже пример предполагает, что вы работаете с общедоступным набором данных.
Доступ к файлам в AWS S3 Bucket
Для частного ведра данных S3 владелец ведра должен предоставить вам доступ к ветру. (Смотрите документацию AWS.)
Во всех случаях вам понадобится учетная запись AWS, потому что AWS SDK предназначен для работы с клиентами.Java (которыйERDDAP™использует для извлечения информации о содержимом ведра) Требуются учетные данные AWS. (Подробнее об этом ниже)
ERDDAP™Доступ к ведрам AWS S3 возможен только в том случае, если вы указали [<cacheFromUrl> (#cachefromurl) (или)<fileDir>) в определенном формате:
https://bucketName.s3.aws-region.amazonaws.com/prefix/
где
- Имя ведра - это краткая форма названия ведра, например, noaa-goes17.
- Aws-область, например, us-east-1, из колонки «Регион» в одной из таблицКонечные точки обслуживания AWSгде ведро действительно находится.
- Префикс является необязательным. Если оно присутствует, оно должно'/'.
Например, https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
Этот формат URL является одной из рекомендаций AWS S3:Доступ к ведруиЭто описание префиксов.ERDDAP™требует, чтобы вы объединили URL-адрес корзины и дополнительный префикс в один URL-адрес, чтобы указать<CacheFromUrl> (или<fileDir>), где находятся файлы.
Тестирование публичных ковшечек AWS S3
Для общедоступных ведер вы можете и должны протестировать URL-адрес ведра каталога AWS S3 в своем браузере, например, https://noaa-goes17.s3.us-east-1.amazonaws.com Если URL ведра правильный и подходящий дляERDDAPОн возвращает XML-документ, который (частичный) Список содержимого этого ведра. К сожалению, полный URL (То есть, ведро URL плюс префикс) этоERDDAP™Желания для данного набора данных не работают в браузере. AWS не предлагает систему для легкого просмотра иерархии ведра в вашем браузере. (Если это неправильно, пожалуйста, напишите Крису. Джон на noaa.gov. В противном случае, Amazon, пожалуйста, добавьте поддержку!)
Просмотр содержимого ведра
Ведра S3 часто содержат несколько категорий файлов в нескольких псевдоподкаталогах, которые могут стать парой файлов.ERDDAP™наборы данных. Чтобы сделатьERDDAP™Наборы данных, вам нужно знать начальный каталог для<CacheFromUrl> (или<fileDir>) и формат имен файлов, которые идентифицируют это подмножество файлов. Если вы попытаетесь просмотреть все содержимое ведра в браузере, S3 просто покажет вам первые 1000 файлов. В настоящее время лучший способ для вас, чтобы просмотреть все содержимое ведра, чтобы сделатьEDDTable FromFileNamesнабор данных (на вашем ПКERDDAP™и/или в вашей публичнойERDDAP) , что также дает вам простой способ просматривать структуру каталога и загружать файлы. The<FileDir> для этого будет URL, который вы сделали выше, например, https://noaa-goes17.s3.us-east-1.amazonaws.com .\[Почему AWS S3 не предлагает быстрый и простой способ сделать это без учетной записи AWS?\]Обратите внимание, что когда я делаю это на своем ПК в сети, отличной от Amazon, похоже, что Amazon замедляет реакцию на струйку. (около 100 (?) Файлы на куски) После первых нескольких кусков (1000 файлов на куски) Скачиваются. Так как ведра могут иметь огромное количество файлов (Noaa-goes17 — 26 миллионов) Получение всего содержимого ведра может занять несколько часов EDDTableFromFileNames. (Например, 12!) до конца.\[Amazon, это правда?\]
Как сделать EDDTable Набор данных FromFileNames с ведром AWS S3
Если у вас есть имя ведра, но у вас еще нет списка файлов в ведре S3 или префикса, который идентифицирует местоположение соответствующих файлов в ведре, используйте приведенные ниже инструкции для создания набора данных EDDTableFromFileNames, чтобы вы могли просматривать иерархию каталогов ведра S3 черезERDDAP?"files"система.
- Откройте счет AWS ERDDAP™используетAWS SDK дляJavaЧтобы получить информацию из AWS, вам нужноСоздать и активировать учетную запись AWS. Это довольно большая работа, с большим количеством вещей, чтобы учиться.
- Поместите свои учетные данные AWS туда, гдеERDDAP™Их можно найти. Следуйте инструкциям вНастройка учетных данных AWS и региона для развитиятакERDDAP™ (В частности, AWS SDK дляJava) Вы сможете найти и использовать свои учетные данные AWS. ЕслиERDDAP™Не можете найти учетные данные, вы увидите java.lang. Исключение: файл профиля не может быть нулевой ошибкойERDDAPфайл log.txt.
Подсказка для Linux и Mac OS: файл учетных данных должен быть в домашнем каталоге пользователя, на котором работает Tomcat (иERDDAP) (Для этого пункта мы предположим, что пользователь=tomcat) в файле под названием ~/.aws/credentials. Не думайте, что ~ is /home/tomcat — на самом деле используйте cd ~, чтобы узнать, где операционная система думает ~ для пользователя =tomcat. Создайте каталог, если он не существует. Кроме того, после того, как вы поместите файл учетных данных на место, убедитесь, что пользователь и группа для файла являются томкатом, а затем используйте 400 учетных данных chmod, чтобы убедиться, что файл читается только для пользователя = томкат.
- Создайте ведро URL вформатировать,ERDDAP™требуетНапример, https://noaa-goes17.s3.us-east-1.amazonaws.com и (для общественных ведер) Проверьте его в браузере, чтобы убедиться, что он возвращает документ XML, который имеет частичный список содержимого этого ведра.
- ИспользоватьГенерировать наборы данныхXmlЧтобы создатьEDDTable FromFileNamesнабор данных:
-
Для начального каталога используйте этот синтаксис: \\\ Скриншоты OnTheFly, YourBucketUrl Например, \\(перенаправлено с «OnTheFly») https://noaa-goes17.s3.us-east-1.amazonaws.com/
-
Имя файла regex? *
-
Рекурсивный? истинный
-
перезаряжать Каждые минуты? 10080
-
институт?NOAA
-
резюме? ничего (ERDDAP™Он автоматически создаст достойное резюме.)
-
Название? ничего (ERDDAP™Это позволит создать достойный заголовок автоматически.) Как обычно, вы должны отредактировать полученный XML для проверки правильности и внесения улучшений до того, как часть наборов данных будет использовать его в своей работе.datasets.xml.
-
- Если вы следуете инструкциям выше и загруж аете набор данных вERDDAPВы создали набор данных EDDTableFromFiles. В качестве примера, чтобы облегчить просмотр и загрузку файлов из ведер открытых данных AWS, мы создали наборы данных EDDTableFromFileNames (см. список ниже).
https://upwell.pfeg.noaa.gov/erddap/search/index.html?searchFor=awsS3Files\_ ) практически для всехAWS S3 Open Data.
\[Несколько ведер, которые мы не включили, также имеют большое количество файлов в корневой директории. (больше, чем может быть загружено в разумные сроки) или не разрешать публичный доступ (Разве не все они должны быть публичными?) Запрашивающий платит ведра (Например, Sentinel) .\]
Если вы нажмете на"files"Ссылка для одного из этих наборов данных, вы можете просматривать дерево каталогов и файлы в этом ведре S3. Из-за дороги\\\* fromOnTheFly EDDTableFromFiles работает, эти списки каталогов всегда идеально актуальны, потому чтоERDDAP™Поймать их на лету. Если вы нажмете вниз по дереву каталога на фактическое имя файла и нажмете на имя файла,ERDDAP™Ваш запрос будет перенаправлен на AWS S3, чтобы вы могли загрузить файл непосредственн о из AWS. Затем вы можете проверить этот файл.
Проблемы? Если ваш EDDTable FromFiles не загружаетсяERDDAP™ (или DasDds) Посмотрите в файле log.txt сообщение об ошибке. Если вы видите a java.lang. Исключение: файл профиля не может быть нулевой ошибкой, проблема заключается в том, что AWS SDKJava (используемыйERDDAP) Мы не находим файл учетных данных. См. инструкции по учетным данным выше.
К сожалению, AWS не позволяет людям использовать браузер для просмотра содержимого публичного ведра.
Тогда вы можете сделатьERDDAP™наборы данных, которые дают пользователям доступ к данным в файлах.
Смотрите инструкции вERDDAP™S3 Ведра (выше) .
Для набора данных EDDTableFromFileNames, который вы сделали выше, если вы немного покопаетесь с именами каталогов и файлов в дереве каталогов, становится ясно, что имена каталогов верхнего уровня (Например, ABI-L1b-RadC) соответствует тому, чтоERDDAP™Мы будем называть отдельные наборы данных. Ведро, с которым вы работаете, может быть похожим. Затем вы можете создать отдельные наборы данных вERDDAP™для каждого из этих наборов данных, используя, например,
https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
как<cacheFromUrl>. К сожалению, для этого конкретного примера наборы данных в корзине представляют собой наборы данных уровня 1 или уровня 2, которыеERDDAP™ не особенно хорош вПотому что набор данных представляет собой более сложный набор переменных, которые используют различные размеры.
Файлы NcML
Файлы NcML позволяют указывать изменения на лету в одном или нескольких исходных источникахNetCDF (v3 или v4) .nc.grib, .bufr, или.hdf (v4 или v5) Файлы, а затем иметьERDDAP™лечить.ncмл файлов в качестве исходных файлов.ERDDAP™наборы данных будут принимать.ncФайлы в любое время.ncФайлы ожидаются. Файлы NcML должны иметь расширение.ncмл. Видишь?UnidataДокументация NcML. NcML полезен, потому что с ним можно что-то сделать. (Например, внесение различных изменений в различные файлы в коллекции, включая добавление размера с определенным значением к файлу.) Что вы не можете сделать сERDDAP?datasets.xml.
- Изменения в a.ncПоследнее измененное время файла мл приведет к тому, что файл будет перезагружаться всякий раз, когда набор данных перезагружается..ncФайлы данных не будут замечены напрямую.
- Оригинальное название: NcML Is\*очень\*чувствительны к порядку некоторых элементов в файле NcML. Подумайте о NcML как о том, чтобы указать серию инструкций в указанном порядке с намерением изменить исходные файлы. (состояние в начале/верху файла NcML) в файлы назначения (состояние в конце / нижней части файла NcML) .
Альтернативой NcML являетсяNetCDFОператоры (NCO) . Большая разница заключается в том, что NcML является системой для внесения изменений на лету. (Исходные файлы не изменяются) тогда какNCOмогут быть использованы для внесения изменений в (или новые версии) Файлы. ОбаNCONcML очень гибкий и позволяет вносить практически любые изменения в файлы. Для обоих это может быть сложным, чтобы выяснить, как именно сделать то, что вы хотите сделать - проверить веб для подобных примеров. Оба являются полезными инструментами для подготовки чистых КДФ иHDFФайлы для использования сERDDAPВ частност и, внести изменения сверх того, чтоERDDAPСистема манипуляций может это сделать.
Пример No1: Добавление измерения времени с одним значением Вот она..ncмл-файл, создающий новое внешнее измерение (время с 1 значением: 1041379200) и добавляет это измерение к переменной pic в файле под названием 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", установить атрибут единицы "секунды с 197001-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)
"Операторы NetCDF (NCO) Содержит дюжину автономных командных программ, которые принимают netCDF.\[v3 или v4\],HDF \[v4 или v5\],\[.grib, .bufr,\]и/илиDAPфайлы в качестве входных данных, а затем работать (Например, получать новые данные, вычислять статистику, печатать, гиперслаб, манипулировать метаданными) и выводить результаты на экран или файлы в текстовом, двоичном или сетевом форматах CDF.NCOпомогает анализ сетчатых научных данных. Стиль командной оболочкиNCOПозволяет пользователям манипулировать и анализировать файлы интерактивно или с помощью экспрессивных скриптов, которые позволяют избежать некоторых накладных расходов на среды программирования более высокого уровня". (из которогоNCOдомашняя страница) .
Альтернативой дляNCOэтоNcML. Большая разница заключается в том, что NcML является системой для внесения изменений на лету. (Исходные файлы не изменяются) тогда какNCOмогут быть использованы для внесения изменений в (или новые версии) Файлы. ОбаNCONcML очень гибкий и позволяет вносить практически любые изменения в файлы. Для обоих это может быть сложным, чтобы выяснить, как именно сделать то, что вы хотите сделать - проверить веб для подобных примеров. Оба являются полезными инструментами для подготовки чистых КДФ иHDFФайлы для использования сERDDAPВ частности, внести изменения сверх того, чтоERDDAPСистема манипуляций может это сделать.
Например, вы можете использоватьNCOсделать единицы переменной времени согласованными в группе файлов, где они изначально не были согласованы. Или вы можете использоватьNCOприменятьscale\_factorиadd\_offsetВ группе файлов, гдеscale\_factorиadd\_offsetимеют разные значения в разных исходных файлах. (Теперь вы можете решить эти проблемы вERDDAP™черезEDDGridИз NcFilesUnpacked, который является вариантомEDDGridFromNcFiles, который распаковывает упакованные данные и стандартизирует временные значения на низком уровне, чтобы иметь дело с файлами сбора, которые имеют разные значения.scale\_factors иadd\_offsetили различные временные единицы.)
NCOСвободное и открытое программное обеспечение, использующееGPL 3.0лицензия.
Пример No1: создание последовательных единиц
EDDGridИз материалов и EDDTable Из файлов следует, что единицы для данной переменной идентичны во всех файлах. Если некоторые файлы тривиальны (не функционально) отличается от других (например, единицы времени)
"секунды с 197001-01 00:00:00 UTC"
"seconds since 1970-01-01T00:00:00Z"Вы можете использоватьNCO?нарисованныйизменять блоки во всех файлах, чтобы они были идентичными
nco/ncatted - единицы, время, o,c' секунды с 197001-01T00:00:00Z'.nc
\[Для многих проблем, подобных этой, в EDDTable From... Файлы наборов данных, теперь вы можете использоватьстандартизировать Что?рассказыватьERDDAPСтандартизация исходных файлов по мере их чтенияERDDAP.\]
Ограничения размера набора данных
Вы увидите много ссылок на «2 миллиарда» ниже. Точнее, это ссылка на 2 147 483 647. (231-1-1) , что является максимальным значением 32-битного подписанного целого числа. В некоторых компьютерных языках, напримерJava (которыйERDDAP™Написано в) Это самый большой тип данных, который может использоваться для многих структур данных. (Например, размер массива) .
Для струнных значений (Например, для переменных имен, имен атрибутов, значений атрибутов String и значений данных String) максимальное количество символов на строку вERDDAP™составляет ~2 млрд. Но почти во всех случаях будут небольшие или большие проблемы, если струна превышает разумный размер. (Например, 80 символов для имен переменных и имен атрибутов и 255 символов для большинства значений атрибутов строки и значений данных.) . Например, веб-страницы, на которых отображаются длинные имена переменных, будут неуклюже широкими, а длинные имена переменных будут усечены, если они превышают предел типа файла ответа.
Для сетчатых наборов данных:
- Максимальное количествоaxisVariables составляет ~ 2 млрд. Максимальное количествоdataVariables составляет ~ 2 млрд. Но если набор данных имеет > 100 переменных, пользователям будет сложно его использовать. И если в наборе данных более 1 миллиона переменных, вашему серверу потребуется много физической памяти и возникнут другие проблемы.
- Максимальный размер каждого измерения (axisVariable) Это ~2 миллиарда значений.
- Максимальное общее количество клеток (Изделие всех размеров размеров) Он не ограничен, но может быть ~9e18.
Для табличных наборов данных:
- Максимальное количествоdataVariables составляет ~ 2 млрд. Но если набор данных имеет > 100 переменных, пользователям будет сложно его использовать. И если в наборе данных более 1 миллиона переменных, вашему серверу потребуется много физической памяти и возникнут другие проблемы.
- Максимальное количество источников (Например, файлы) Это может быть агрегировано ~ 2 млрд.
- В некоторых случаях максимальное количество строк из отдельного источника (Например, файл, но не база данных.) Это ~2 миллиарда строк.
- Я не думаю, что есть другие ограничения.
Для сетчатых и табличных наборов данных существуют некоторые внутренние ограничения на размер подмножества, которые могут быть запрошены пользователем в одном запросе. (часто связаны с >2 миллиардами чего-либо или ~9e18 чем-либо;) Но гораздо более вероятно, что пользователь достигнет определенных ограничений типа файла.
- NetCDFВерсия 3.ncФайлы ограничены 2 ГБ байтами. (Если это действительно проблема для кого-то, дайте мне знать: Можно добавить поддержку дляNetCDFВерсия 3.nc64-битное расширение илиNetCDFВерсия 4, которая значительно увеличит предел, но не бесконечно.)
- Браузеры ломаются после всего лишь ~ 500 МБ данных.ERDDAP™Ограничить ответ на.htmlTableЗапрос 400 МБ данных.
- Многие программы анализа данных имеют схожие ограничения. (Например, максимальный размер измерения часто составляет ~ 2 миллиарда значений.) Таким образом, нет причин усердно работать, чтобы обойти ограничения типа файла.
- Ограничения типа файла полезны тем, что они предотвращают наивные запросы на действительно огромные объемы данных. (Например, «дайте мне вес ь этот набор данных», когда набор данных имеет 20 ТБ данных.) Это займет недели или месяцы для загрузки. Чем дольше загрузка, тем больше вероятность того, что она выйдет из строя по разным причинам.
- Ограничения типа файла полезны тем, что они заставляют пользователя иметь дело с подмножествами разумного размера. (Например, работа с большим сетчатым набором данных через файлы с данными из одной временной точки каждый) .
Переключение на ACDD-1.3
Мы (особенноГенерировать наборы данныхXml) В настоящее время рекомендуетсяACDD версия 1.3Конвенция была ратифицирована в начале 2015 года и упоминается как ACDD-1.3. До этогоERDDAP™Версия 1.62 (Выпущен в июне 2015 года) ,ERDDAP™используется/рекомендуется оригинал, версия 1.0,NetCDFКонвенция об атрибутах для обнаружения набора данныхкоторый упоминается как "UnidataDataset Discovery v1.0" в глобальных конвенциях иMetadata\_Conventionsатрибуты.
Если ваши наборы данных используют более ранние версии ACDD, мы рекомендуем вам перейти на ACDD-1.3. Это не сложно. ACDD-1.3 совместим с версией 1.0. Переключаться для всех наборов данных (кромеEDDGridFromErddap и EDDTable Наборы данных Erddap) :
- Удалить недавно обесценившийся глобальныйMetadata\_ConventionsАтрибут путем добавления (или путем изменения существующегоMetadata\_Conventionsатрибут)
<att name="Metadata\\_Conventions">null</att>
Глобальный набор данных<addAttributes>. 2. Если набор данных имеет атрибут Конвенции в глобальном масштабе<addAttributes"Изменить все"UnidataDataset Discovery 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,Генерировать наборы данныхXmlне добавляли их автоматически до тех пор, пока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 используютEDDTable FromNcFilesиEDDGridИз NcFiles.
(По состоянию на август 2019 года) Мы можем легко ошибаться, но мы еще не убеждены, чтоЗаррПодобные системы, которые разбивают файлы данных на более мелкие куски, являются отличным решением проблемы.ERDDAP™Считывание данных, хранящихся в облачных сервисах, таких как Amazon AWS S3. Zarr — это отличная технология, которая показала свою полезность в самых разных ситуациях.ERDDAP+S3 будет одной из таких ситуаций. Прежде чем приложить усилия для хранения всех наших данных в Zarr, давайте проведем некоторые тесты, чтобы увидеть, действительно ли это лучшее решение.
Проблемы с доступом к данным в облаке — задержка (Лаг для первого получения данных) Доступ на уровне файлов (Вместо блочного доступа) . Zarr решает проблему доступа на уровне файлов, но ничего не делает с задержкой. По сравнению с просто загрузкой файла (Таким образом, его можно читать как локальный файл с доступом на уровне блоков.) Зарр может даже усугубить проблему задержки, потому что с Зарром чтение файла теперь включает в себя серию из нескольких звонков для чтения различных частей файла. (Каждый со своим лагом) . Проблема задержки может быть решена путем параллелизации запросов, но это решение более высокого уровня, не зависящее от Zarr.
И с Зарром (как в реляционных базах данных) Мы теряем удобство того, что файл данных является простым, единственным файлом, который вы можете легко проверить целостность или сделать / загрузить копию.
ERDDAP™ (как в v2) имеет систему для поддержания локального кэша файлов из источника URL (Например, S3) (см.<CacheFromUrl> и<cacheMaxGB> (#cachefromurl) ). И новый [<nThreads> (#нити) Следует свести к минимуму проблему задержки путем параллелизации поиска данных на высоком уровне.<CacheFromUrl работает очень хорошо для многих сценариев. (Мы не знаем, насколько это выгодно)<nThreads> не имеет дополнительных тестов. Мы признаем, что не проводили синхронизацию на примере AWS с хорошим сетевым подключением, но мы успешно протестировали различные удаленные URL-источники файлов. ИERDDAP?<cacheFromUrl> работает с любым типом файла данных (например,.nc,.hdf.csv,.jsonlCSV) Даже если внешне сжатый (например,.gz) без каких-либо изменений в файлах (Например, переписать их как коллекции Зарра.) .
Вполне вероятно, что различные сценарии будут благоприятствовать различным решениям, например, только нужно прочитать часть файла один раз. (Зарр победит) , vs. нужно прочитать весь файл один раз, vs. нужно прочитать часть или весь файл несколько раз<CacheFromUrl> выиграет.
Прежде чем приложить усилия для хранения всех наших данных в Zarr, давайте проведем некоторые тесты, чтобы увидеть, действительно ли это лучшее решение.
Список типов наборов данных
Если вам нужна помощь в выборе правильного типа набора данных, посмотритеВыбор типа набора данных.
Типы наборов данных делятся на две категории. (Почему?)
EDDGrid
- EDDGrid наборы данных обрабатывают сетчатые данные.
- вEDDGridНаборы данных, переменные данных представляют собой многомерные массивы данных.
- Должна быть переменная оси для каждого измерения. Переменные оси должны быть указаны в порядке их использования переменными данных.
- вEDDGridВсе переменные данных должны использоваться (доля) Все переменные оси. (Почему? А если нет?)
- Сортированные значения измерения - Во всемEDDGridнаборы данных, каждое измерение должно быть сортировано (восходящий или нисходящий) . Каждый из них может быть нерегулярным. Никаких связей быть не может. Это является требованием кСтандарт метаданных CF. Если значения любого измерения не сортированы, набор данных не будет загружен иERDDAP™идентифицирует первое несортированное значение в файле журнала, BigParent Директория /logs/log.txt.
Некоторые подклассы имеют дополнительные ограничения (в частности,EDDGridСовокупное существующее измерение требует, чтобы внешнее (самое левое, первое) измерение было восходящим.
Несортированные значения размерности почти всегда указывают на проблему с исходным набором данных. Чаще всего это происходит, когда в агрегацию включается неправильно названный или неподходящий файл, что приводит к несортированному измерению времени. Чтобы решить эту проблему, см. сообщение об ошибке вERDDAP™log.txt файл, чтобы найти значение времени. Затем посмотрите в исходных файлах, чтобы найти соответствующий файл. (либо до, либо после) Это не входит в агрегацию.
- Смотрите более полное описаниеEDDGridМодель данных.
- TheEDDGridТипы наборов данных:
- EDDGridИз аудиофайловагрегирует данные из группы локальных аудиофайлов.
- EDDGridИз папыРучки сетчатых данных отDAPСерверы.
- EDDGridИздательство:EDDTableпозволяет конвертировать табличный набор данных в сетчатый набор данных.
- EDDGridИз Эрддапаобрабатывает сетчатые данные из удаленногоERDDAP.
- EDDGridИз ЭтопоОбрабатывает встроенные данные топографии ETOPO.
- EDDGridИз материаловЭто суперкласс всехEDDGridИз... классов материалов.
- EDDGridИзображен ия MergeIRFilesагрегирует данные из группы локальных MergeIR.gzФайлы.
- EDDGridИз NcFilesагрегирует данные из группы локальныхNetCDF (v3 или v4) .ncи связанных с ними файлов.
- EDDGridИз NcFilesUnpackedявляется вариантом, еслиEDDGridИз NcFiles, который также собирает данные из группы локальныхNetCDF (v3 или v4) .ncи связанных с ними файлов, которыеERDDAP™распаковывать на низком уровне.
- EDDGridLonPM180Изменение значений долготы ребенкаEDDGridОни находятся в диапазоне от -180 до 180.
- EDDGridLon0360Изменение значений долготы ребенкаEDDGridОни находятся в диапазоне от 0 до 360.
- EDDGridSideBySideагрегаты два или болееEDDGridнаборы данных бок о бок.
- EDDGridСовокупность существующих измеренийагрегаты два или болееEDDGridнаборы данных, каждый из которых имеет различный диапазон значений для первого измерения, но идентичные значения для других измерений.
- EDDGridКопияМожно сделать локальную копию другогоEDDGridданные и обслуживает данные из локальной копии.
- ВсеEDDGridНаборы данных поддерживают настройку nThreads, которая сообщаетERDDAP™Сколько потоков использовать при ответе на запрос. Видишь?nПотокиДокументация для деталей.
EDDTable
- EDDTable Наборы данных обрабатывают табличные данные.
- Табличные данные могут быть представлены в виде таблицы, похожей на базу данных, с строками и столбцами. Каждая колонка (переменная данных) Он имеет имя, набор атрибутов и хранит только один тип данных. Каждая строка имеет наблюдение (или группы связанных ценностей) . Источник данных может иметь данные в другой структуре данных, более сложной структуре данных и/или нескольких файлах данных.ERDDAP™должен иметь возможность сплющивать исходные данные в таблицу, похожую на базу данных, чтобы представить данные в виде табличного набора данных пользователямERDDAP.
- Смотрите более полное описаниеМодель данных EDDTable.
- Типы наборов данных EDDTable:
- EDDTableFromAllDatasetsЭто набор данных более высокого уровня, который содержит информацию обо всех других наборах данных в вашемERDDAP.
- EDDTableFromAsciiFilesагрегирует данные из запятых, вкладок, полуколонов или разделённых по пространству табличных файлов данных ASCII.
- EDDTableFromAsciiServiceЭто суперкласс всех классов EDDTableFromAsciiService.
- EDDTableFromAsciiServiceNOSобрабатывает данные некоторых изNOAAВеб-сервисы NOS.
- EDDTable FromAudioFilesагрегирует данные из группы локальных аудиофайлов.
- EDDTable From AwsXmlFilesагрегирует данные с автоматической метеорологической станции (AWS) XML файлы.
- EDDTable From Кассандраобрабатывает табличные данные из одной таблицы Кассандры.
- EDDTable FromColumnarAsciiFilesагрегирует данные из табличных файлов данных ASCII с столбцами данных фиксированной ширины.
- EDDTable FromDapSequenceобрабатывать табличные данные изDAPСерверы последовательности.
- EDDTable FromDatabaseобрабатывает табличные данные из одной таблицы баз данных.
- EDDTable FromEDDGridпозволяет создавать набор данных EDDTable изEDDGridнабор данных.
- EDDTable FromErddapобрабатывает табличные данные с удаленногоERDDAP.
- EDDTable FromFileNamesСоздает набор данных из информации о группе файлов в файловой системе сервера, но он не обслуживает данные из файлов.
- EDDTable Из материаловЭто суперкласс всех классов EDDTable From...Files.
- EDDTable FromHttpGetэтоERDDAPЭто единственная система для импорта и экспорта данных.
- EDDTable FromHyraxФайлы (Обнародовано) агрегирует данные из файлов с несколькими переменными с общими размерами, обслуживаемымиHyrax OPeNDAPсервер.
- EDDTable FromInvalidCRAFilesагрегированные данные отNetCDF (v3 или v4) .ncФайлы, которые используют конкретный, недействительный вариант CF DSG Contiguous Ragged Array (КРА) Файлы. ХотяERDDAP™Поддерживает этот тип файла, это недействительный тип файла, который никто не должен начинать использовать. Группы, которые в настоящее время используют этот тип файла, настоятельно рекомендуется использовать.ERDDAP™для создания действительных файлов CF DSG CRA и прекращения испо льзования этих файлов.
- EDDTableFromJsonlCSVFilesагрегированные данные отДжон Линии файлов CSV.
- EDDTableFromMultidimNcFilesагрегированные данные отNetCDF (v3 или v4) .ncФайлы с несколькими переменными с общими размерами.
- EDDTable FromNcFilesагрегированные данные отNetCDF (v3 или v4) .ncФайлы с несколькими переменными с общими размерами. Хорошо продолжать использовать этот тип набора данных для существующих наборов данных, но для новых наборов данных мы рекомендуем использовать вместо этого EDDTableFromMultidimNcFiles.
- EDDTable FromNcCFFilesагрегированные данные отNetCDF (v3 или v4) .ncфайлы, использующие один из форматов файлов, указанных вCF Дискретная геометрия выборки (DSG) конвенции. Но для файлов, использующих один из многомерных вариантов CF DSG, используютEDDTableFromMultidimNcFilesВместо этого.
- EDDTable FromNccsvFilesагрегированные данные отNCCSVФайлы ASCII.csv.
- EDDTable FromNOS (Обнародовано) обрабатывает табличные данные с серверов NOS XML.
- EDDTable FromOBISобрабатывает табличные данные с серверов OBIS.
- EDDTableFromParquetFilesобрабатывать данные отпаркет.
- EDDTable FromSOSобрабатывать табличные данные изSOSСерверы.
- Скриншоты из ThreddsFiles (Обнародовано) агрегирует данные из файлов с несколькими переменными с общими размерами, обслуживаемымиПЕРЕВОДЫOPeNDAPсервер.
- EDDTable FromWFSФайлы (Обнародовано) сделать локальную копию всех данных изArcGISMapServerWFSсервера, чтобы данные можно было быстро восстановитьERDDAP™пользователей.
- EDDTableAggregateRowsможет создавать набор данных EDDTable из группы наборов данных EDDTable.
- EDDTableCopyВы можете сделать локальную копию многих типов наборов данных EDDTable, а затем быстро восстановить данные из локальной копии.
Подробное описание типов наборов данных
EDDGridИз папы
EDDGridИз папы обрабатывает переменные сетки отDAPСерверы.
- Мы настоятельно рекомендуем использоватьГенерировать наборы данных Программа XmlЧтобы составить приблизительный проектdatasets.xmlКусок для этого набора данных. Вы можете собрать необходимую информацию, чтобы настроить ее или создать свой собственный XML.EDDGridНабор данных FromDap, просмотрев файлы DDS и DAS исходного набора данных в вашем браузере (Добавление .das и .dds вsourceUrlНапример, https://thredds1.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day.dds ) .
- EDDGridFromDap может получать данные из любой многомерной переменнойDAPСервер данных. (Раньше,EDDGridFromDap был ограничен переменными, обозначенными как «сетки», но это больше не является требованием.)
- Сортированные значения измерения - Значения для каждого измерения должны быть сортированы по порядку. (восходящий или нисходящий) . Значения могут быть нерегулярно разнесены. Никаких связей быть не может. Это является требованием кСтандарт метаданных CF. Если значения любого измерения не сортированы, набор данных не будет загружен иERDDAP™идентифицирует первое несортированное значение в файле журнала, BigParent Директория /logs/log.txt.
Несортированные значения размерности почти всегда указывают на проблему с исходным набором данных. Чаще всего это происходит, когда в агрегацию включается неправильно названный или неподходящий файл, что приводит к несортированному измерению времени. Чтобы решить эту проблему, см. сообщение об ошибке вERDDAP™log.txt файл, чтобы найти значение времени. Затем посмотрите в исходных файлах, чтобы найти соответствующий файл. (либо до, либо после) Это не входит в агрегацию.
EDDGridДеп скелет XML
<dataset type="EDDGridFromDap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
EDDGridИздательство:EDDTable
EDDGridИздательство:EDDTable позволяет конвертировать табличный набор данных EDDTable вEDDGridсетчатый набор данных. Помните, чтоERDDAP™Обработка данных как таковаясетчатые наборы данных (подклассыEDDGrid) или табличные наборы данных (Подклассы EDDTable) .
- Обычно, если у вас есть сетчатые данные, вы просто настраиваетеEDDGridНабор данных напрямую. Иногда это невозможно, например, когда у вас есть данные, хранящиеся в реляционной базе данных.ERDDAP™Доступ возможен только через EDDTableFromDatabase.EDDGridКласс FromEDDTable позволяет исправить эту ситуацию.
- Очевидно, что данные в базовом наборе данных EDDTable должны быть (в основном) сетчатые данные, но в табличной форме. Например, набор данных EDDTable может иметь данные CTD: измерения тока на восток и на север, на нескольких глубинах, в несколько раз. Поскольку глубины в каждой точке времени одинаковы,EDDGridFromEDDTable может создавать сетчатый набор данных с измерением времени и глубины, который получает доступ к данным через базовый набор данных EDDTable.
- Генерировать наборы данных Xml - Мы настоятельно рекомендуем использоватьГенерировать наборы данных Программа XmlЧтобы составить приблизительный проектdatasets.xmlКусок для этого набора данных. Вы можете собрать информацию, необходимую для улучшения чернового проекта.
- Источник атрибутов - Как и все другие типы данных,EDDGridFromTable исходит из того, что существуют глобальные исходные атрибуты иглобальныйaddAttributes (указанный вdatasets.xml) которые объединяются, чтобы сделать глобальную Атрибуты, которые видят пользователи. Для глобального источника атрибутов,EDDGridFromEDDTable использует глобальную комбинацию Атрибуты базового набора данных EDDTable. (Если вы задумаетесь об этом на минуту, это имеет смысл.)
Ан алогично для каждогоaxisVariables иdataVariable?addAttributes,EDDGridFromEDDTable использует комбинацию переменных Атрибуты из базового набора данных EDDTable в качествеEDDGridИсточник атрибутов переменной FromEDDTable. (Если вы задумаетесь об этом на минуту, это имеет смысл.)
Если EDDTable имеет хорошие метаданные, тоEDDGridДля этого часто требуется очень малоaddAttributesМетаданные - всего несколько настроек здесь и там.
-
dataVariables versusaxisVariableс- EDDTable имеет толькоdataVariableС. АнEDDGridВ наборе данных FromEDDTable будет несколькоaxisVariables (Созданный из некоторыхdataVariables) и некоторыеdataVariables (Созданный из оставшихсяdataVariables) .Генерировать наборы данныхXmlУгадайте, на какой EDDTabledataVariableдолжен статьEDDGridИздательство:EDDTableaxisVariables, но это всего лишь предположение. Вы должны изменить выход GenerateDatasetsXml, чтобы указать, какиеdataVariables станетaxisVariables и в каком порядке.
-
Ценности - Нет ничего о лежащей в основе EDDTable, чтобы сказатьEDDGridОтредактировать возможные значенияaxisVariables в сетчатой версии набора данных, поэтому вы ДОЛЖНЫ предоставить эту информацию для каждогоaxisVariableС помощью одного из этих атрибутов:
- axisValues — позволяет указать список значений. Например, <Att name="axisValues"Тип = "двойной список">2, 2.5, 3, 3.5, 4</att> Обратите внимание на использование aтип данныхПлюс слово «список». Кроме того, тип списка (Например, двойной) Необходимо сопоставить данные Тип переменной в EDDTable иEDDGridИз наборов данных EDDTable.
- axisValuesStartStrideStop - позволяет указать последовательность регулярно разнесенных значений, указав значения начала, шага и остановки. Вот пример, который эквивалентен приведенному выше примеру оси Ценности:
<Оригинальное названиеТип = "двойной список"(#attributetype)>2, 0,5, 4</att> Опять же, обратите внимание на использование типа данных списка. Кроме того, тип списка (Например, двойной) Необходимо сопоставить данные Тип переменной в EDDTable иEDDGridИз наборов данных EDDTable.
Обновления - Так же, как нет способа дляEDDGridОт EDDTable до определения оси Ценности от EDDTable изначально, также не существует надежного способа дляEDDGridОт EDDTable до определения от EDDTable, когда изменились значения оси (Особенно, когда есть новые значения для переменной времени.) . В настоящее время единственным решен ием является изменение атрибута axisValues вdatasets.xmlи перезагрузить набор данных. Например, вы можете написать сценарий для
- Поискdatasets.xmlдля datasetID= DatasetID " Вы работаете с правильным набором данных.
- Поискdatasets.xmlдля следующего возникновения
Источник переменных
Вы работаете с правильной переменной. - Поискdatasets.xmlдля следующего возникновения
<att name="axisValuesStartStrideStop" type="doubleList">
Итак, вы знаете начальную позицию тега. 4. Поискdatasets.xmlдля следующего возникновения
</att>
чтобы вы знали конечное положение значений оси. 5. Замените старое начало, шаг, остановите ц енности новыми ценностями. 6. Контактыфлаг URLЧтобы набор данных сообщалERDDAP™Перезагрузить набор данных.
Это не идеально, но это работает.
- точность - КогдаEDDGridFromEDDTable отвечает на запрос пользователя о данных, он перемещает строку данных из таблицы ответов EDDTable вEDDGridРеакционная сетка. Для этого он должен выяснить, соответствуют ли значения «оси» на данной строке в таблице некоторой комбинации значений оси в сетке. Для целых типов данных легко определить, равны ли два значения. Но для поплавков и двойников это вызывает ужасную проблему чисел с плавающей запятой.не совпадающий точно. (Например, 0,2 против 0,199999999999996) . To (пытаться) Разберись с этим,EDDGridFromTable позволяет указать точный атрибут для любого изaxisVariables, которое определяет общее число десятичных цифр, которые должны быть идентичными.
- Например,<Att name="precision" type="int">5</att>
- Для различных типов переменных данных существуют различные значения точности по умолчанию. Дефолты обычно уместны. Если их нет, нужно указать разные значения.
- ДляaxisVariableкоторые являютсявремя или время Штамповые переменныеПо умолчанию - полная точность (Точный матч) .
- ДляaxisVariables, которые плавают, точность по умолчанию составляет 5.
- ДляaxisVariables, которые являются двойными, точность по умолчанию равна 9.
- ДляaxisVariableкоторые имеют целые типы данных,EDDGridFromEDDTable игнорирует атрибут точности и всегда использует полную точность. (Точный матч) .
- Предупреждаю! При выполнении преобразования части табличных данных в часть сетчатых данных, еслиEDDGridFromEDDTable не может соответствовать значению «ось» EDDTable одному из ожидаемых значений.EDDGridЗначения оси от EDDTable,EDDGridСкачать бесплатно FromEDDTable (Без ошибок) Выбрасывает данные из этого ряда таблицы. Например, могут быть другие данные. (Не в сетке) в наборе данных EDDTable. (И если шагнуть 1, не является очевидным дляEDDGridИз таблицы, какие значения оси являются желаемыми значениями, а какие из них должны быть пропущены из-за шага.) Таким образом, если значения точности слишком высоки, пользователь увидит недостающие значения в ответе данных, когда действительно существуют действительные значения данных.
И наоборот, если значения точности установлены слишком низко, значения «оси» EDDTable не должны совпадать.EDDGridЗначения оси от EDDTable будут (ошибочно) совпадение.
Эти потенциальные проблемы ужасны, потому что пользователь получает неправильные данные. (Отсутствие ценностей) Когда нужно получить правильные данные (По меньшей мере сообщение об ошибке) . Это не недостаток вEDDGridИз Таблицы.EDDGridFromTable не может решить эту проблему. Проблема присуща преобразованию табличных данных в сетчатые данные (Если не могут быть сделаны другие предположения, но они не могут быть сделаны здесь.) . Это зависит от вас,ERDDAP™администратора, для Проверьте свойEDDGridСверхъестественное Для того, чтобы убедиться, что значения точности установлены, чтобы избежать этих потенциальных проблем.
пороговый разрыв
- пороговый разрыв- Это очень необычный тип набора данных. Типы запросов, которые могут быть сделаны на (управляемый) анEDDGridнабор данных (Связанные с диапазонами и шагамиaxisVariables) Они сильно отличаются от типов запросов, которые могут быть сделаны. (управляемый) Набор данных EDDTable (Это связано с диапазонами некоторых переменных.) , исполнениеEDDGridНаборы данных FromEDDTable будут сильно различаться в зависимости от точного запроса и скорости базового набора данных EDDTable. Для запросов, которые имеют значение шага 1,EDDGridFromEDDTable может запросить базовый EDDTable для относительно большого объема данных (Как будто шаг = 1) Затем просеивают результаты, сохраняя данные из одних строк и отбрасывая данные из других. Если он должен просеять много данных, чтобы получить необходимые данные, запрос займет больше времени.
ЕслиEDDGridFromEDDTable может сказать, что будут большие пробелы (С строками нежелательных данных) между строками с желаемыми данными,EDDGridFromEDDTable может выбрать несколько подзапросов к базовому EDDTable вместо одного большого запроса, тем самым пропуская нежелательные строки данных в больших пробелах. Чувствительность к этому решению контролируется значением порога разрыва, указанным в<gapThreshold > тег (По умолчанию = 1000 строк исходных данных) . Установка разрыва Порог на меньшее число приведет к созданию набора данных (в целом) Больше подзапросов. Установка разрыва Порог для большего числа приведет к созданию набора данных (в целом) Меньше подзапросов.
Если порог разрыва слишком мал,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\]температура\[5000000000\].
Расчет размера зазора сложнее при наличии нескольких осей.
Для каждого запроса пользователя,EDDGridFromEDDTable печатает диагностические сообщения, связанные с этимlog.txtФайл.
- Если<logLevel> (#loglevel) вdatasets.xmlНастроен на информацию, это печатает сообщение как \* nOuterAxes=1 из 4 nOuterRequests=22 Если nOuterAxes=0, то разрыв Threshold не был превышен и на EDDTable будет сделан только один запрос. Если nOuterAxes>0, порог разрыва был превышен, и nOuterRequests будет сделан в EDDTable, соответствующий каждой запрашиваемой комбинации самых левых nOuterAxes. Например, если набор данных имеет 4axisVariables иdataVariableкак на восток\[время\]\[широта\]\[долгота\]\[глубина\]Самый левый (первый) Переменная оси — это время.
- Если<logLevel>> вdatasets.xmlустанавливается на всех, дополнительная информация записывается в файл log.txt.
EDDGridEDDTable скелет XML
<dataset type="EDDGridFromEDDTable" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDGridFromEDDTable, this only works if the underlying EDDTable
supports updateEveryNMillis. -->
<gapThreshold>...</gapThreshold> <!-- 0 or 1. The default is 1000. >
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
<dataset>...</dataset> <!-- The underlying source EDDTable dataset. -->
</dataset>
EDD* FromERDDAP
EDDGridИз Эрддапа обрабатывает сетчатые данные из удаленногоERDDAP™Сервер. EDDTable FromErddap обрабатывает табличные данные с удаленногоERDDAP™Сервер.
- EDDGridFromErddap и EDDTableFromErddap ведут себя не так, как все другие типы наборов данныхERDDAP.
- Как и другие типы наборов данных, эти наборы данных получают информацию о наборе данных из источника и сохраняют ее в памяти.
- Как и другие типы данных, когдаERDDAP™поиск наборов данных, отображение формы доступа к данным ( datasetID .html) , или отображает форму Make A Graph ( datasetID граф) ,ERDDAP™использует информацию о наборе данных, который находится в памяти.
- EDDGridFromErddap и EDDTable Erddap является основой дляСети/кластеры/федерацииизERDDAPs, которые эффективно распределяют использование ЦП (В основном для создания карт) , использование памяти, хранение набора данных и использование полосы пропускания большого центра обработки данных.
перенаправить
- В отличие от других типов данных, когдаERDDAP™получает запрос на данные или изображения из этих наборов данных,ERDDAP перенаправлятьЗапрос на удаленныйERDDAP™Сервер. Результатом является:
- Это очень эффективно (CPU, память и пропускная способность) Потому что иначе
- КомпозитныйERDDAP™Вы должны отправить запрос другомуERDDAP™ (который требует времени) .
- ДругойERDDAP™должен получить данные, переформатировать их и передать данные в композитныйERDDAP.
- КомпозитныйERDDAP™должен получать данные (использование полосы пропускания) Переформатировать его (Использование CPU и памяти) и передавать данные пользователю (использование полосы пропускания) . Перенаправляя запрос и позволяя другомуERDDAP™Чтобы отправить ответ непосредственно пользователю, композитныйERDDAP™По сути, не тратит время процессора, память или пропускную способность на запрос.
- Перенаправление является прозрачным для пользователя независимо от клиентского программного обеспечения. (браузер или любое другое программное обеспечение или инструмент командной строки) .
- Это очень эффективно (CPU, память и пропускная способность) Потому что иначе
- Вы можете сказатьERDDAP™не перенаправлять запросы пользователей путем установки<Перенаправление>фальшивый</redirect>, но это сводит на нет большинство преимуществ типа набора данных ...FromErddap (В частности, рассеивание нагрузки на переднем концеERDDAP™Удаленный / BackendERDDAP) .
Подписки
Обычно, когдаEDDGridFromErddap и EDDTable Из Эрддапа (повторять) Заряженный на свойERDDAP, они пытаются добавить подписку на удаленный набор данных через удаленныйERDDAPСистема подписки e-mail/URL. Таким образом, когда удаленный набор данных изменяется, удаленныйERDDAP™контактыsetDataset Флаг URLна твоейERDDAP™чтобы локальный набор данных был перезагружен как можно скорее и чтобы локальный набор данных всегда был полностью обновлен и имитировал удаленный набор данных. Таким образом, в первый раз, когда это произойдет, вы должны получить электронное письмо с просьбой подтвердить подписку. Однако, если местныйERDDAP™Вы не можете отправить электронное письмо или удаленныйERDDAPСистема подписки на электронную почту / URL не активна, вы должны отправить удаленное сообщение по электронной почтеERDDAP™администратор и запросить вручную добавить [<OnChange> (#изменить) ...</onChange> теги для всех соответствующих наборов данных, чтобы вызвать ваш набор данныхsetDataset Флаг URL. Увидимся.ERDDAP™Ежедневный отчет для списка setDataset Флаг URL, но просто отправьте ихEDDGridFromErddap и EDDTableFromErddap для удаленного доступаERDDAP™администратор.
Это не работает? Ваши локальные наборы данных не синхронизируются с удаленными наборами данных? Несколько вещей должны работать правильно для этой системы, чтобы ваши наборы данных оставались в актуальном состоянии. Проверьте каждую из этих вещей в порядке:
- ТвойERDDAP™должен иметь возможность отправлять электронные письма. Смотрите настройки электронной почты в setup.xml.
- В целом (Но не всегда) ВашERDDAP?<Базовый URL и<baseHttpsUrl> не должен иметь номер порта (Например, :8080, :8443) . Если они это делают, используйтепроксипасУдалить порт из Url.
- В вашем setup.xml<ПодпискаToRemoteErddapDataset> должна быть установлена на истинность.
- Когда местный EDD... Набор данных FromErddap перезагружается, он должен отправить запрос на п ультERDDAP™Подписаться на удаленный набор данных. Посмотрите на log.txt, чтобы узнать, происходит ли это.
- Вы должны получить электронное письмо с просьбой подтвердить запрос на подписку.
- Вы должны нажать на ссылку в этом электронном письме, чтобы подтвердить запрос на подписку.
- УдаленныйERDDAP™Надо сказать, что проверка прошла успешно. В любое время вы можете запросить электронное письмо с пультаERDDAP™со списком отложенных и действительных подписок. Смотрите форму в удаленныйrddapBase Урл /erddap/subscriptions/list.html.
- Когда меняется удаленный набор данных (Например, получить дополнительные данные) , удаленныйERDDAP™Постарайтесь связаться с флагурлом на вашемERDDAP. Вы не можете проверить это, но вы можете спросить администратора пультаERDDAP™Чтобы проверить это.
- ТвойERDDAP™Вы должны получить запрос на установку этого флагурла. Загляните в свой log.txt для запроса «setDatasetFlag.txt» (s) Проверьте, есть ли сообщение об ошибке, связанное с запросами.
- ТвойERDDAP™Затем следует попытаться перезагрузить этот набор данных. (Возможно, не сразу, но как можно скорее.) .
Совреме нный max (время) ?
EDDGridНаборы данных TableFromErddap изменяют только сохраненную информацию о каждом наборе исходных данных, когда набор исходных данных"перезагрузить"и некоторые изменения метаданных (Например, переменная времениactual\_range) , тем самым генерируя уведомление о подписке. Если исходный набор данных содержит данные, которые часто меняются (Новые данные каждую секунду) и использует"обновить"системы, чтобы замечать частые изменения базовых данных,EDDGrid/TableFromErddap не будет уведомлен об этих частых изменениях до следующей «перезагрузки» набора данных.EDDGridТаблица FromErddap не будет полностью обновлена. Вы можете минимизировать эту проблему, изменив исходный набор данных.<ПерезагрузкаEveryNMinutes> в меньшее значение (60? 15?) Чтобы было больше уведомлений о подписке, чтобы сообщитьEDDGrid/TableFromErddap обновляет свою информацию об исходном наборе данных.
Или, если ваша система управления данными знает, когда исходный набор данных имеет новые данные. (Например, через скрипт, который копирует файл данных на место) Если это не очень частое (каждые 5 минут или реже) Есть лучшее решение:
- Не используйте<Обновление EveryNMillis> для обновления исходного набора данных.
- Установите исходный набор данных<Перезагрузить EveryNMinutes в большее число (1440?) .
- Пусть сценарий свяжется с исходным набором данныхфлаг URLСразу после этого он копирует новый файл данных на место.
Это приведет к тому, что исходный набор данных будет полностью обновлен и заставит его генерировать уведомление о подписке, которое будет отправлено на веб-сайт.EDDGrid/TableFromErddap набор данных. Это приведет кEDDGrid/TableFromErddap Dataset будет полностью обновлен (В течение 5 секунд будут добавлены новые данные) . И все это будет сделано эффективно (Без ненужных перезагрузок набора данных) .
Нет.addAttributes,axisVariableилиdataVariable
В отличие от других типов наборов данных, EDDTableFromErddap иEDDGridНаборы данных FromErddap не позволяют<addAttributes>,<axisVariable> или<dataVariable> разделы вdatasets.xmlдля этого набора данных. Проблема заключается в том, что это приведет к несоответствиям:
- Допустим, это было разрешено, и вы добавили новый глобальный атрибут.
- Когда пользователь спрашиваетERDDAP™Для глобальных атрибутов появится новый атрибут.
- Когда пользователь спрашиваетERDDAP™Для файла данных, вашERDDAP™Перенаправляет запрос на источникERDDAP. ЭтоERDDAP™Они не знают о новом атрибуте. Таким образом, если он создает файл данных с метаданными, например,.ncфайл, метаданные не будут иметь нового атрибута.
Есть два обходных пути:
- Убедить администратора источникаERDDAP™изменения, которые вы хотите внести в метаданные.
- Вместо EDDTableFromErddap используйтеEDDTable FromDapSequence. Или вместо того, чтобыEDDGridFromErddap, использованиеEDDGridИз папы. Эти типы EDD позволяют эффективно подключаться к набору данных на удаленном устройстве.ERDDAP™ (но без перенаправления запросов данных) Они позволяют включать глобальные<addAttributes>,<axisVariable> или<dataVariable> разделы вdatasets.xml. Еще одно отличие: вам нужно будет вручную подписаться на удаленный набор данных, чтобы набор данных был на вашем компьютере.ERDDAP™будут уведомлены (черезфлаг URL) при внесении изменений в удаленный набор данных. Таким образом, вы создаете новый набор данных вместо ссылки на удаленный набор данных.
Другие примечания
- По соображениям безопасности,EDDGridFromErddap и EDDTable Из Erddap не поддерживают<Доступно>> (#доступность) тег и не может быть использован с удаленными наборами данных, которые требуют входа в систему (потому что они используются).<Доступно>> (#доступность) ). Видишь?ERDDAP?Система безопасностиограничение доступа к некоторым наборам данных для некоторых пользователей.
- Начиная сERDDAP™v2.10,EDDGridFromErddap и EDDTableFromErddap поддерживают эту функцию.<Доступные файлы> (#доступные файлы) Тэг. В отличие от других типов наборов данных, по умолчанию верно, но файлы набора данных будут доступны только в том случае, если исходный набор данных также имеет<Доступные файлы> установлен на истинность.
- Вы можете использоватьГенерировать наборы данных Программа Xmlчтобы сделатьdatasets.xmlДля этого типа набора данных. Но вы можете легко сделать эти типы наборов данных вручную.
EDDGridСкелет Эрддапа XML
- 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>
EDDTable FromErddap скелет XML
- Скелет XML для набора данных EDDTableFromErddap очень прост, потому что цель состоит в том, чтобы просто имитировать удаленный набор данных, который уже подходит для использования.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>
EDDGridИз Этопо
EDDGridИз Этопо служит толькоНабор данных ETOPO1 Global 1-Minute Gridded Elevation (Ice Surface, сетка зарегистрирована, двоичный, 2 байт int: etopo1\_ice\_g\_i2.zip) который распределяется сERDDAP.
- Только дваdatasetIDподдерживается дляEDDGridFromEtopo, чтобы вы могли получить доступ к данным со значениями долготы от -180 до 180, или значениями долготы от 0 до 360.
- Нет никаких подтегов, так как данные уже описаны внутри.ERDDAP.
- Итак, два варианта дляEDDGridНаборы данных FromEtopo (буквально) :
<!-- 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 для обработки конкретного типа файла:
- EDDGridИзображения MergeIRFilesОбработка данных от griddedОбъединение.gzФайлы.
- EDDGridИз аудиофайловагрегирует данные из группы локальных аудиофайлов.
- EDDGridИз NcFilesОбработка данных от griddedGRIB .grbфайлы,HDF (v4 или v5) .hdfфайлы,.ncмлфайлы, иNetCDF (v3 или v4) .ncФайлы. Это может работать с другими типами файлов. (Например, BUFR) Мы просто не тестировали его - пожалуйста, отправьте нам некоторые образцы файлов, если вы заинтересованы.
- EDDGridИз NcFilesUnpackedявляется вариантомEDDGridFromNcFiles, который обрабатывает данные из сеткиNetCDF (v3 или v4) .ncи связанных с ними файлов, которыеERDDAP™распаковывать на низком уровне.
В настоящее время другие типы файлов не поддерживаются. Но обычно относительно легко добавить поддержку для других типов файлов. Свяжитесь с нами, если у вас есть запрос. Или, если ваши данные находятся в старом формате файла, от которого вы хотели бы отказаться, мы рекомендуем конвертировать файлы.NetCDFv3.ncФайлы.NetCDFявляется широко поддерживаемым двоичным форматом, обеспечивает быстрый случайный доступ к данным и уже поддерживаетсяERDDAP.
Из файлов Подробности
Следующая информация относится ко всем подклассамEDDGridИз материалов.
Агрегация существующего измерения
Все вариацииEDDGridИз файлов можно агрегировать данные из локальных файлов, где каждый файл имее т 1. (или более) Различные значения для самых левых (первый) размерность, обычно\[время\]которые будут агрегированы. Например, размеры могут быть\[время\]\[высота\]\[широта\]\[долгота\]Файлы могут иметь данные для одного (или несколько) временная стоимость (s) За файл. Полученный набор данных выглядит так, как будто все данные файла были объединены. Большими преимуществами агрегации являются:
- Размер агрегированного набора данных может быть намного больше, чем один файл может быть удобно. (2 ГБ) .
- Для данных в реальном времени легко добавить новый файл с последними данными. Вам не нужно переписывать весь набор данных.
Требования к агрегации следующие:
- Местные файлы не должны быть одинаковымиdataVariables (как определено в наборе данныхdatasets.xml) . Набор данных будет иметьdataVariableопределяется вdatasets.xml. Если файл не имеет данностиdataVariable,ERDDAP™При необходимости будут добавлены недостающие значения.
- Все этоdataVariableдолжны использовать тот жеaxisVariables/размеры (как определено в наборе данныхdatasets.xml) . Файлы будут агрегированы на основе первых (самый левый) размерность, отсортированная по восходящему пор ядку.
- Каждый файл может иметь данные для одного или нескольких значений первого измерения, но не может быть никакого перекрытия между файлами. Если файл имеет более одного значения для первого измерения, значения должны быть отсортированы в порядке возрастания, без связей.
- Все файлы должны иметь одинаковые значения для всех других измерений. Точность испытаний определяетсяОбсуждение AxisNDigits.
- Все файлы должны иметь одинаковуюединицыМетаданные для всехaxisVariables иdataVariableС. Если это проблема, вы можете использоватьNcMLилиNCOЧтобы решить проблему.
Агрегация через имена файлов или глобальные метаданные
Все вариацииEDDGridFromFiles также может объединять группу файлов, добавляя новый левый край. (первый) размерность, обычно время, основанное на значении, полученном из каждого им ени файла или из значения глобального атрибута, который находится в каждом файле. Например, имя файла может включать временное значение для данных в файле.ERDDAP™Это позволит создать новое измерение времени.
В отличие от аналогичной функции в THREDDS,ERDDAP™всегда создаетaxisVariableс числовыми значениями (В соответствии с требованиями CF) Никогда не струнные ценности (которые не допускаются CF) . Кроме того,ERDDAP™будет сортировать файлы в агрегации на основе числаaxisVariableЗначение, которое присваивается каждому файлу, так что переменная оси всегда будет иметь сортированные значения, требуемые CF. Подход THREDDS к лексикографической сортировке на основе имен файлов приводит к агрегациям, где значения оси не сортируются. (который не допускается CF) когда имена файлов сортируются иначе, чем производныеaxisVariableценностей.
Чтобы создать одну из этих групп вERDDAP™Вы определите новый левый край (первый) axisVariableС особой, псевдо<sourceName> Что говоритERDDAP™Где и как найти значение для нового измерения из каждого файла.
- Формат для псевдоsourceNameкоторый получает значение от имени файла (просто filename.ext) это \\\ имя файла, данные Тип , ExtractRegex , Групповой номер *
- Формат для псевдоsourceNameкоторый получает значение от имени абсолютного пути файла \\\ имя пути, данные Тип , ExtractRegex , Групповой номер * \[Для этого всегда используется название пути.'/'Как персонаж разделителя каталога, никогда не ''.\]
- Формат для псевдоsourceNameкоторый получает значение от глобального атрибута \\\ глобальный: атрибут Имя , данные Тип , ExtractRegex , Групповой номер *
- Это псевдоsourceNameОпцион работает иначе, чем другие: вместо создания нового левого (первый) axisVariableЭто заменяет стоимость текущегоaxisVariableс значением, извлеченным из имени файла (просто filename.ext) . Формат является \\\ заменить Файловое имя, данные Тип , ExtractRegex , Групповой номер *
Описание частей, которые вы должны предоставить:
- атрибут Имя имя глобального атрибута, который находится в каждом файле и который содержит значение размерности.
- данные Тип - Это определяет тип данных, которые будут использоваться для хранения значений. Смотрите стандартный списокданные ТипыэтоERDDAP™поддерживает, за исключением того, что здесь не допускается струна, поскольку переменные оси вERDDAP™Не может быть струнных переменных.
Существует дополнительный псевдотип данных, TimeFormat= струна Формат времени Что говоритERDDAP™что значение является струнным временным штампомЕдиницы, подходящие для струнного времени. В большинстве случаев струнный формат TimeFormat, который вам нужен, будет вариацией одного из этих форматов:
- yyyy-MM-ddT'HH:mm:ss.SSSZ - ISO 8601:2004 (Е) Формат даты. Вам может понадобиться сокращенная версия, например,yyyy-MM-ddTHH:mm:ss илиyyyy-MM-dd.
- yyyyMMddHHmmss.SSS - компактная версия формата даты ISO 8601. Вам может понадобиться сокращенная версия этого, например, yyyyMMddHHmmss или yyyyMMdd.
- M/d/yyyy H:mm:ss.SSS — формат даты слэша в США. Вам может понадобиться сокращенная версия этого, например, M/d/yyyy.
- yyyyDDDHHmmssSSS - это год плюс нулевой день года (Например, 001 = 1 января 365 = 31 декабря в не високосный год; иногда ошибочно называют юлианскую дату.) . Вам может понадобиться сокращенная версия этого, например, yyyyDDD.
Если вы используете этот псевдотип данных, добавьте его в новую переменную.<addAttributes>:
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
Если вы хотите сместить все временные значения, сместите временную величину в единицах, например: 197001-01T12:00:00Z.
- ExtractRegex - Это тот самыйрегулярное выражение (учебник) который включает в себя группу захвата (в скобках) который описывает, как извлечь значение из имени файла или глобального значения атрибута. Например, имя файла S19980011998031.L3b\_MO\_CHL.nc, группа захвата #1",\dучебник", в обычном выражении S (\dучебник) \dучебник\.L3b\* улавливает первые 7 цифр после S: 1998001.
- ЗахватGroupNumber - Это число группы захвата. (внутри пары скобок) в обычном выражении, содержащем и нтересующую информацию. Обычно это 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) путем извлечения 7 цифр после «S» и до «.L3m» в имени файла и интерпретации их как значений времени, отформатированных как yyyyDDD.
Вы можете отменить базовое время по умолчанию (197001-01T00:00:00Z) путем добавленияДобавить атрибуткоторый определяет различные единицы атрибута с различным базовым временем. Обычная ситуация: есть группы файлов данных, каждый с 1-дневным составом спутникового набора данных, где вы хотите, чтобы значение времени было полдень дня, упомянутого в имени файла. (центрированное время каждого дня) И хотите переменнуюlong\_nameБыть «центрированным временем». Пример, который делает это:
<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 в базовом времени, что добавляет 12 часов относительно первоначального базового времени 1970-01-01T00:00:00Z.
Полный пример одного изaxisVariableкоторый делает агрегированный набор данных с новой осью «бега» (с внутренними значениями) который получает значения выполнения из глобального атрибута «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>
Обратите внимание на использование группы захвата No 2 для захвата цифр, которые происходят после «r» или «s» и до «\_global». Этот пример также показывает, как добавить дополнительные атрибуты. (например,ioos\_categoryи единицы) переменной оси.
Вне шне сжатые файлы
-
Наборы данных, которые являются подмножествамиEDDGridИз материалов и EDDTable FromFiles может обслуживать данные непосредственно из файлов данных, сжатых извне, включая.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2и .Z файлы.
-
Это работает удивительно хорошо!
В большинстве случаев замедление, связанное с декомпрессией файлов данных малого и среднего размера, незначительно. Если вам нужно сохранить дисковое пространство, мы настоятельно рекомендуем использовать эту функцию, особенно для старых файлов, к которым редко обращаются. -
Экономь деньги!
Это одна из немногих особенностей вERDDAP™Это дает вам возможность сэкономить много денег (хотя и за счет незначительно сниженной производительности) . Если коэффициент сжатия равен, например, 6:1 (Иногда это будет намного выше.) , то для файлов данных набора данных потребуется только 1/6 дискового пространства. Тогда, возможно, вы сможете обойтись 1 рейдом. (для определенного размера) Вместо 6 СПИД (одинакового размера) . Это огромная экономия средств. Надеюсь, возможность сжимать некоторые файлы в коллекции (Старшие из них?) и не сжимать других (Новые?) Чтобы изменить это в любое время, давайте сведем к минимуму недостатки сжатия некоторых файлов. (Медленный доступ) . И если выбор между хранением файлов на ленте (Доступно только по запросу, после задержки) Для хранения их на рейде (Доступно черезERDDAP) Тогда есть огромное преимущество в использовании сжатия, чтобы пользователи могли быть интерактивными и (относительно) быстрый доступ к данным. И если это может спасти вас от покупки дополнительного RAID, эта функция может сэкономить вам около 30 000 долларов. -
Для всехEDDGridПодклассы из файлов, если файлы данных имеют расширение, указывающее, что они сжаты извне (В настоящее время:.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2или .Z) ,ERDDAP™будет декомпрессировать файлы в каталог кэша набора данных, когда он их читает (Если они еще не в кэше) . То же самое верно для двоичного файла (например,.nc) Подклассы EDDTableFromFiles.
-
Подклассы EDDTableFromFiles для небинарных файлов (Например, .csv) , файлы данных с расширением, указывающим, что они сжаты извне, будут сжиматься на лету при чтении файла.
-
ПРЕДУПРЕЖДЕНИЕ: Если используется тип сжатого файла (например,.tgzили.zip) Поддерживает более 1 файла внутри сжатого файла, сжатый файл должен содержать всего 1 файл.
-
Эта функция предполагает, что содержимое внешне сжатых файлов не изменяется, так что кэшированный декомпрессированный файл может быть повторно использован. Если некоторые или все файлы данных набора данных иногда изменяются, не сжимайте эти файлы. Это согласуется с обычным использованием, поскольку люди обычно не сжимают файлы, которые им иногда нужно изменить.
-
<ФайлNameRegex Чтобы сделать эту работу, набор данных<FileNameRegex> должен соответствовать именам сжатых файлов. Очевидно, регексы как.\Сопоставим все имена файлов. Если вы указываете конкретный тип файла, например,\\.nc, то вам нужно изменить regex, чтобы включить расширение сжатия, например, . \.nc\.gz(если все документы будут что-то**.nc.gzфайлы).
-
Это нормально, если ваш набор данных включает в себя смесь сжатых и не сжатых файлов. Это может быть полезно, если вы считаете, что некоторые файлы (Например, старые файлы) Они будут использоваться реже, и поэтому будет полезно сэкономить дисковое пространство, сжимая их. Чтобы сделать эту работу,<FileNameRegex> должен соответствовать именам сжатых и не сжатых файлов, например, .\или.\\.nc (|\.gz) (где группа захвата в конце этого указывает, что.gzнеобязательно.
-
Это нормально, если вы сжимаете или декомпрессируете определенные файлы в коллекции в любое время. Если данные не используются [<Обновление EveryNMillis (#updateeverynmillis) Установите набор данныхфлаграссказыватьERDDAP™Перезагрузить набор данных и таким образом заметить изменения. Интересно, что вы можете использовать различные алгоритмы сжатия и настройки для разных файлов в одном наборе данных. (например,.bz2редко используемые файлы,.gzдля не часто используемых файлов и без сжатия для часто используемых файлов) Просто убедитесь, что регекс поддерживает все расширения файлов, которые используются, например, ..nc (|\.gz|\.bz2) .
-
Конечно, коэффициенты сжатия и скорости для различных алгоритмов сжатия варьируются в зависимости от исходного файла и настроек. (Например, уровень сжатия) . Если вы хотите оптимизировать эту систему для своих файлов, проведите тест различных методов сжатия с вашими файлами и с различными настройками сжатия. Если вы хотите надежного (Не обязательно лучший) Настройка, мы немного рекомендуемgzip (.gz) .gzipне делает самый маленький сжатый файл (достаточно близко) Он очень быстро сжимает файл и (более важным дляERDDAP™пользователи) Очень быстро декомпрессирует файл. Плюс,gzipПрограммное обеспечение поставляется в стандартной комплектации с каждой установкой Linux и Mac OS и легко доступно для Windows через бесплатные инструменты, такие как 7Zip и дополнения Linux, такие как Git Bash. Например, для сжатия исходного файла в.gzВерсия файла (имя файла, но с.gzприлагаемый) использовать (Linux, Mac OS и Git Bash)
gzip sourceName
Декомпрессия а.gzВернуться к оригиналу, использовать стрельба sourceName.gz
Для сжатия каждого из исходных файлов в каталоге и его подкаталогах, рекурсивно, использовать gzip-р Имя режиссера
Чтобы разложить каждый из.gzфайлы в каталоге и его подкаталогах, рекурсивно, использовать гунцип Имя режиссера
-
Предупреждение: не сжимайте внешне (gzip) Файлы, которые уже сжаты внутри! Многие файлы уже сжаты внутри. Если тыgzipЭти файлы, полученные файлы не будут намного меньше (<5%) иERDDAP™Они будут тратить время на их декомпрессию, когда им нужно будет их прочитать. Например:
- файлы данных: например,.nc4 и.hdf5 файлов: Некоторые файлы используют внутреннее сжатие, а некоторые нет. Сжатые переменные имеют атрибуты «\_ChunkSize». Кроме того, если группа сетчатых.ncили.hdfФайлы бывают разных размеров, скорее всего, они внутренне сжаты. Если они все одинакового размера, они не сжимаются внутри.
- Файлы изображений: например, .gif, .jpg и .png
- аудиофайлы: например, .mp3 и .ogg.
- Видеофайлы: например, .mp4, .ogv и .webm.
Один неудачный случай: аудиофайлы .wav огромны и не сжаты внутри. Было бы неплохо сжать (gzip) Но, как правило, вы не должны этого делать, потому что если вы это сделаете, пользователи не смогут воспроизводить сжатые файлы в своем браузере.
-
Пример испытания: сжатие (сgzip) Набор данных с сеткой 1523.ncФайлы.
- Данные в исходных файлах были скудными (Много недостающих ценностей) .
- Общее дисковое пространство увеличилось с 57 ГБ до сжатия до 7 ГБ после.
- Запрос на большое количество данных из 1 точки<1 с до и после компрессии.
- Запрос 1 точки данных для 365 точек времени (Наихудшая ситуация) От 4 с до 71 с.
Для меня это разумный компромисс для любого набора данных и, конечно, для наборов данных, которые используются нечасто.
-
Внутреннее сжатие против внешнего — По сравнению с внутренним сжатием файла, предлагаемым.nc4 и.hdf5 файлов,ERDDAPПодход к внешне сжатым двоичным файлам имеет преимущества и недостатки. Недостатком является то, что для однократного чтения небольшой части одного файла внутреннее сжатие лучше.EDDGridОт файлов нужно только разложить несколько кусков (s) Файл, а не весь файл. НоERDDAPПодход имеет некоторые преимущества:
- ERDDAP™Поддерживает сжатие всех типов файлов данных (двоичный и недвоичный, например,.nc3 и .csv) не только.nc4 и.hdf4.
- Если основная часть файла должна быть прочитана более одного раза за короткий промежуток времени, то это экономит время на декомпрессию файла один раз и чтение его много раз. Это происходит вERDDAP™Когда пользователь использует Make-A-Graph для набора данных и вносит ряд небольших изменений в график.
- Возможность иметь сжатые файлы и не сжатые файлы в одной коллекции позволяет вам больше контролировать, какие файлы сжаты, а какие нет. И этот дополнительный контроль приходит без изменения исходного файла (Поскольку вы можете сжать файл, например,.gzЗатем декомпрессируйте его, чтобы получить исходный файл.) .
- Возможность изменять в любое время, сжат ли данный файл и как он сжат. (Различные алгоритмы и настройки) Это дает вам больше контроля над производительностью системы. Вы можете легко восстановить исходный несжатый файл в любое время.
Хотя ни один из подходов не является победителем во всех ситуациях, ясно, чтоERDDAPСпособность обслуживать данные из внешних сжатых файлов делает внешнее сжатие разумной альтернативой внутреннему сжатию..nc4 и.hdf5. Это важно, учитывая, что внутреннее сжатие является одной из основных причин, по которым люди выбирают использование..nc4 и.hdf5.
Декомпрессированный кэш
ERDDAP™делает декомпрессированную версию любого сжатого двоичного (например,.nc) Файл данных, когда нужно прочитать файл. Декомпрессированные файлы хранятся в каталоге набора данных внутри BigParent Директория /декомпрессия/. Декомпрессированные файлы, которые не использовались в последнее время, будут удалены, чтобы освободить место, когда совокупный размер файла составляет > 10 ГБ. Вы можете изменить это, установив<DecompressedCacheMaxGB (По умолчанию 10) в наборах данных Xml.xml, например,
<decompressedCacheMaxGB>40</decompressedCacheMaxGB>
Кроме того, декомпрессированные файлы, которые не использовались в течение последних 15 минут, будут удалены в начале каждой основной перезагрузки набора данных. Вы можете изменить это, установив<DecompressedCacheMaxMinutesOld> (По умолчанию = 15) в наборах данных Xml.xml, например,
<decompressedCacheMaxMinutesOld>60</decompressedCacheMaxMinutesOld>
Большие числа приятны, но кумулятивный размер декомпрессированных файлов может вызвать BigParent Директория Исчезает дисковое пространство, что вызывает серьезные проблемы.
- Декомпрессия файла может занять значительное количество времени. (0,1-10 секунд) , наборы данных со сжатыми файлами могут извлечь выгоду из установки набора данных [<nThreads> (#нити) Настройка на большее число (2? 3? 4?) . Недостатки еще более высоких цифр (Например, 5? 6? 7?) Это уменьшает отдачу, и запрос одного пользовате ля может использовать высокий процент ресурсов системы, что значительно замедляет обработку запросов другого пользователя. Таким образом, нет идеальной настройки nThreads, просто разные последствия в разных ситуациях с разными настройками.
Сортированные значения измерения
Значения для каждого измерения должны быть сортированы по порядку. (восходящий или нисходящий, за исключением первого (самый левый) измерение, которое должно быть восходящим) . Значения могут быть нерегулярно разнесены. Никаких связей быть не может. Это является требованием кСтандарт метаданных CF. Если значения любого измерения не сортированы, набор данных не будет загружен иERDDAP™идентифицирует первое несортированное значение в файле журнала, BigParent Директория /logs/log.txt.
Несортированные значения размерности почти всегда указывают на проблему с исходным набором данных. Чаще всего это происходит, когда в агрегацию включается неправильно названный или неподходящий файл, что приводит к несортированному измерению времени. Чтобы решить эту проблему, см. сообщение об ошибке вERDDAP™log.txt файл, чтобы найти значение времени. Затем посмотрите в исходных файлах, чтобы найти соответствующий файл. (либо до, либо после) Это не входит в агрегацию.
Директории
Файлы могут быть в одном каталоге или в каталоге и его подкаталогах. (рекурсивно) . Если имеется большое количество файлов (Например, >1000) , операционная система (и таким образомEDDGridИз материалов) Работает намного эффективнее, если хранить файлы в серии подкаталогов. (один в год или один в месяц для наборов данных с очень частыми файлами) Чтобы никогда не было большого количества файлов в данном каталоге.
<CacheFromUrl>
ВсеEDDGridFromFiles и все наборы данных EDDTableFromFiles поддерживают набор тегов, которые сообщаютERDDAP™загружать и поддерживать копию всех файлов удаленного набора данных или кэш нескольких файлов (скачать по мере необходимости) . Это может быть невероятно полезно. Видишь?кэш Документация Url.
Дистанционные каталоги и HTTP Range Requests
(AKA Byte Serving, Byte Range Requests, Accept-Rangeshttpзаголовок)
EDDGridFromNcFiles, EDDTableFromMultidimNcFiles, EDDTableFromNcFiles и EDDTableFromNcCFFiles иногда обслуживать данные из.ncфайлы на удаленных серверах и доступ к ним через HTTP, если сервер поддерживаетБайт обслуживаетHTTP-запросы диапазона (Механизм HTTP для байтового обслуживания) . Это возможно благодаря Netcdf-java. (которыйERDDAP™использовать для чтения.ncфайлы) Поддержка чтения данных с удаленного.ncФайлы через HTTP-запросы.
Не делай этого! Это ужасно неэффективно и медленно. Вместо этого используйте [<cacheFromUrl>система (#cachefromurl) .
ДоступERDDAP™наборы данных в виде файлов по запросам байтового диапазона - Переверните это, учитывая, что вы можете (в теории) Подумайте о наборе данных вERDDAP™Как гигант.ncфайл с приложением ".nc"на базу OPenDAPURL для данного набора данных (например, https://myserver.org/erddap/griddap/datasetID.nc а также путем добавления запроса после этого для указания подмножества) Возможно, разумно спросить, можно ли использовать netcdf-java.Ferretили какой-либо другойNetCDFклиентское программное обеспечение для чтения данных через HTTP-запросы из диапазонаERDDAP. Ответ - нет, потому что на самом деле нет огромного ".nc"файл. Если вы хотите сделать это, выберите один из этих вариантов:
- Использовать(OPeN)DAPклиентское программное обеспечение для подключения к услугам griddap, предлагаемымERDDAP. Это то, чтоDAP (и таким образомERDDAP) Он был разработан для. Это очень эффективно.
- Или скачать исходный файл (s) из которого"files"система (или файл подмножества через.nc? запрос) на компьютер и использовать netcdf-java;Ferretили какой-либо другойNetCDFКлиентское программное обеспечение для чтения (теперь) локальный файл (s) .
Информация о кэшированных файлах
КогдаEDDGridСначала загружается набор данных FromFiles,EDDGridFromFiles считывает информацию из всех соответствующих файлов и создает таблицы. (Одна строка для каждого файла) с информацией о каждом действительном файле и каждом «плохом» (иной или недействительный) Файл.
- Таблицы также хранятся на диске.NetCDFv3.ncфайлы в BigParent Директория /dataset/ Last2CharsOfDatasetID / datasetID / в файлах с именем: раскладной.nc (который содержит список уникальных имен каталогов) , файл Столик.nc (который содержит таблицу с информацией каждого действительного файла) , Плохие материалы.nc (который содержит таблицу с информацией о каждом плохом файле) .
- Чтобы ускорить доступ кEDDGridНабор данных Files (За счет использования большего объема памяти) Вы можете использовать
true
рассказыватьERDDAP™сохранить копию таблицы информации файла в памяти.
- Копия файловых информационных таблиц на диске также полезна, когдаERDDAP™Отключается и перезапускается: экономитEDDGridИз файлов, которые нужно перечитать все файлы данных.
- При перезагрузке набора данных,ERDDAP™Нужно только прочитать данные в новых файлах и файлах, которые изменились.
- Если файл имеет структуру, отличную от других файлов (Например, другой тип данных для одной из переменных или другое значение для "единицы"атрибут) ,ERDDAPДобавляет файл в список «плохих» файлов. Информация о проблеме с файлом будет написана на BigParent Директория /logs/log.txt файл.
- Вам никогда не нужно удалять или работать с этими файлами. Одно исключение: если вы все еще вносите изменения в набор данныхdatasets.xmlНастройка, вы можете удалить эти файлы, чтобы заставитьERDDAP™Перечитывать все файлы, так как они будут читаться и интерпретироваться по-разному. Если вам нужно удалить эти файлы, вы можете сделать это, когдаERDDAP™Бежит. (Затем установитефлагПерезагрузить набор данных как можно скорее.) Однако,ERDDAP™Как правило, отмечается, чтоdatasets.xmlИнформац ия не совпадает с файлом Информация о таблице и автоматически удаляет таблицы файлов.
- Если вы хотите поощрятьERDDAP™для обновления сохраненной информации о наборе данных (Например, если вы просто добавили, удалили или изменили некоторые файлы в каталог данных набора данных.) Используйтефлаговая системапринуждатьERDDAP™Обновление кэшированной информации файла.
Обработка запросов
Когда обрабатывается запрос клиента на данные,EDDGridFromFiles может быстро заглянуть в таблицу с достоверной информацией о файле, чтобы увидеть, какие файлы имеют запрошенные данные.
Обновление кэшированной файловой информации
Всякий раз, когда набор данных перезагружается, информация кэшированного фа йла обновляется.
- Набор данных периодически перезагружается, как определено<перезагрузить EveryNMinutes> в наборе данныхdatasets.xml.
- Набор данных перезагружается как можно скорее, когда это возможно.ERDDAP™Выявляете, что вы добавили, удалили,касаться (Чтобы изменить последний файл Измененное время) или изменить файл данных.
- Набор данных перезагружается как можно скорее, если вы используетефлаговая система.
Когда данные перезагружаются,ERDDAP™Сопоставляет имеющиеся в настоящее время файлы с таблицами кэшированной информации о файлах. Новые файлы читаются и добавляются в действующую таблицу файлов. Файлы, которые больше не существуют, выпадают из таблицы файлов. Файлы, в которых изменилась временная метка файла, считываются, и их информация обновляется. Новые таблицы заменяют старые таблицы в памяти и на диске.
Плохие файлы
Таблица плохих файлов и причины, по котор ым файлы были объявлены плохими (поврежденный файл, отсутствующие переменные и т.д.) отправляется по электронной почте Все На адрес электронной почты (Возможно, вы) Каждый раз, когда набор данных перезагружается. Вы должны заменить или восстановить эти файлы как можно скорее.
Пропавшие переменные
Если некоторые файлы не имеютdataVariables определено в наборе данныхdatasets.xmlКусок, все в порядке. КогдаEDDGridFromFiles читает один из этих файлов, он будет действовать так, как если бы файл имел переменную, но со всеми отсутствующими значениями.
Проблемы FTP / Советы
Если вы FTP новые файлы данныхERDDAP™сервера в то время какERDDAP™Бежит, есть шанс, чтоERDDAP™Перезагрузка набора данных во время процесса FTP. Это происходит чаще, чем вы думаете! Если это произойдет, файл будет выглядеть действительным. (имеет действительное имя) Но файл еще не действителен. ЕслиERDDAP™пытается прочитать данные из этого недействительного файла, в результате ошибки файл будет добавлен в таблицу недействительных файлов. Это не хорошо. Чтобы избежать этой проблемы, используйте временное имя файла, например, ABC2005..nc\_TEMP .Тогда тест FileNameRegex (см. ниже) Укажет, что это не соответствующий файл. После завершения процесса FTP переименуйте файл в правильное имя. Процесс переименования приведет к тому, что файл станет актуальным в одно мгновение.
"0 файлов" сообщение об ошибке
Если бежишьГенерировать наборы данныхXmlилиDasDdsЕсли вы пытаетесь загрузитьEDDGridИсточник: Files Dataset inERDDAP™, и вы получаете сообщение об ошибке «0 файлов», указывающее, чтоERDDAP™найдено 0 совпадающих файлов в каталоге (Когда вы думаете, что в этом каталоге есть соответствующие файлы) :
- Убедитесь, что файлы действительно находятся в этом каталоге.
- Проверьте написание названия каталога.
- Проверьте файл NameRegex. Очень, очень легко делать ошибки с регексами. Для целей тестирования попробуйте regex .\*, который должен соответствовать всем именам файлов. (Посмотри.нормативная документацияиучебник по регексу.)
- Убедитесь, что пользователь, который запускает программу (Пользователь=tomcat (?) Для Tomcat/ERDDAP) У вас есть разрешение «читать» эти файлы.
- В некоторых операционных системах (Например, SELinux) В зависимости от системных настроек пользователь, который запустил программу, должен иметь разрешение «читать» для всей цепочки каталогов, ведущих в каталог, в котором есть файлы.
EDDGridФайлы скелет XML
- Скелет XML для всехEDDGridПодклассы материалов:
<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*Из аудиофайлов
EDDGridИз аудиофайлов и EDDTable FromAudioFiles агрегированные данные из набора локальных аудиофайлов. (Первые появились вERDDAP™v1.82.) Разница заключается в том, чтоEDDGridFromAudioFiles рассматривает данные как многомерный набор данных (Обычно с 2 размерами:\[Файловый старт Время\]и\[истекший Время внутри файла\]) , тогда как EDDTableFromAudioFiles рассматривает данные как табличные данные (обычно с колонками для файла startTime, прошедшего времени с файлом и данными из аудиоканалов) .EDDGridFromAudioFiles требует, чтобы все файлы имели одинаковое количество образцов, поэтому, если это не так, вы должны использовать EDDTableFromAudioFiles. В противном случае выбор типа EDD полностью зависит от вас. Одно из преимуществ EDDTableFromAudioFiles: вы можете добавлять другие переменные с другой информацией, например,stationIDСтанция Тип. В обоих случаях отсутствие унифицированной временной переменной затрудняет работу с данными из этих типов EDD, но не было хорошего способа настроить унифицированную временную переменную.
Посмотрите на эти суперклассы,EDDGridИз материаловиEDDTable Из материаловДля получения общей информации о том, как работает этот класс и как его использовать.
Мы настоятельно рекомендуем использоватьГенерировать наборы данных Программа XmlЧтобы составить приблизительный проектdatasets.xmlКусок для этого набора данных. Поскольку аудиофайлы не имеют метаданных, кроме информации, связанной с кодированием звуковых данных, вам придется редактировать выход из наборов данных GenerateDatasets. Xml предоставляет важную информацию (Например, название, резюме,creator\_nameинститут, история) .
Подробности:
- Существует большое количество форматов аудиофайлов. В настоящее времяERDDAP™Можно читать данные из большинства файлов .wav и .au. В настоящее время он не может читать другие типы аудиофайлов, например, .aiff или .mp3. Если вам нужна поддержка других форматов аудиофайлов или других вариантов .wav и .au, пожалуйста, отправьте свой запрос Крису. Джон на noaa.gov. Или, как обходной путь, который вы можете использовать прямо сейчас, вы можете конвертировать свои аудиофайлы в PCM. Знаменитый (для целочисленных данных) PCM/_FLOAT (для данных с плавающей точкой) .wav файлы так чтоERDDAP™Может работать с ними.
- В настоящее времяERDDAP™читать аудиофайлы с помощью чегоJavaКласс AudioFormat вызывает кодирование PCM\_FLOAT, PCM\_SIGNED, PCM\_UNSIGNED, ALAW и ULAW.ERDDAP™Преобразует значения PCM\_UNSIGNED (Например, от 0 до 255) подписанные ценности (Например, от -128 до 128) путем перестановки битов в значениях данных.ERDDAP™преобразует ALAW и ULAW, закодированные из их родного формата закодированных байтов в короткие (Int16) ценностей. С тех порJavaBigEndian = реальные данныеERDDAP™Перестраивает байты данных, хранящихся с bigEndian=false (Маленький эндиан) Чтобы правильно читать значения. Для всех остальных кодировок (PCM) ,ERDDAP™Считывает данные как есть.
- КогдаERDDAP™считывает данные из аудиофайлов, преобразует доступные аудиометаданные файла в глобальные атрибуты. Это всегда будет включать (показанные значения выборки)
Струнный аудиобигэндийский «ложный»; //истинный или ложный внутри аудио Каналы 1; Струнное аудиокодирование «PCM\_SIGNED»; FrameRate 96000.0; // в секунду int audioFrameSize 2; //# байтов данных на кадр float audioSampleRate 96000.0; // в секунду int audioSampleSizeInBits 16; //# битов на канал на образец
ДляERDDAPДля целей фрейм является синонимом выборки, которая представляет собой данные за один момент времени. атрибуты вERDDAP™будет иметь информацию, описывающую данные, как это было в исходных файлах.ERDDAP™Часто это изменяется при чтении данных, например, закодированные данные PCM\_UNSIGNED, ALAW и ULAW преобразуются в PCM\_SIGNED, а BigEndian = ложные данные преобразуются в BigEndian = истинные данные. (Что такое какJavaХочет почитать) . В конце концов, значения данных вERDDAP™всегда будет являтьсякодированный PCMзначения данных (т.е. простые оцифрованные образцы звуковой волны) .
- КогдаERDDAP™считывает данные из аудиофайлов, считывает весь файл.ERDDAP™Он может считывать до 2 миллиардов образцов на канал. Например, если скорость выборки составляет 44 100 образцов в секунду, 2 миллиарда образцов переводят примерно 756 минут звуковых данных на файл. Если у вас есть аудиофайлы с большим количеством данных, вам нужно разбить файлы на более мелкие куски.ERDDAP™Их можно читать.
- Потому чтоERDDAP™читать целые аудиофайлы,ERDDAP™должен иметь доступ к большому объему памяти для работы с большими аудиофайлами. Видишь?ERDDAPНастройки памяти. Опять же, если это проблема, обходной путь, который вы можете использовать прямо сейчас, состоит в том, чтобы разбить файлы на более мелкие куски.ERDDAP™Их можно читать с меньшей памятью.
- Некоторые аудиофайлы были написаны неправильно.ERDDAP™Прилагает небольшие усилия для рассмотрения таких случаев. Но вообще, когда есть ошибка,ERDDAP™Исключение будет (Отклонить этот файл) или (Если ошибка не обнаруживается) Читать данные (Но данные будут неверными) .
- ERDDAP™Не проверяет и не изменяет громкость звука. В идеале, целочисленные аудиоданные масштабируются для использования всего диапазона типа данных.
- Аудиофайлы и аудиоплееры не имеют системы отсутствующих значений. (Например, -999 или Float.NaN) . Таким образом, аудиоданные не должны иметь отсутствующих значений. Если отсутствуют ценности (Например, если вам нужно удлинить аудиофайл) Используйте серию 0, которая будет истолкована как совершенное молчание.
- КогдаERDDAP™считывает данные из аудиофайлов, он всегда создает колонку под названием elapsed Время с временем для каждого образца, в секундах (Хранится как двойник) относительно первого образца (который уже установлен Время = 0,0 с) . сEDDGridИз аудиофайлов это становится переменной оси прошедшего времени.
- EDDGridОт AudioFiles требуется, чтобы все файлы имели одинаковое количество образцов. Если это не так, вы должны использовать EDDTable FromAudioFiles.
- ДляEDDGridИз аудиофайлов мы рекомендуем вам установить [<ИзмерениеЦенностиВ памяти> (#dimensionvaluesinmemory) ложный (Как рекомендуется GenerateDatasets Xml) Потому что измерение времени часто имеет огромное количество значений.
- ДляEDDGridИз аудиофайлов вы почти всегда должны использоватьEDDGridОтраслевая система дляАгрегация через Файловые именапочти всегда путем извлечения даты начала записи; Время с имен файлов. Например,
<sourceName>\\*\\*\\*fileName,"timeFormat=yyyyMMdd'\\_'HHmmss",aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>
Генерировать наборы данных Xml поддержит это и поможет вам в этом.
- Для EDDTableFromAudioFiles почти всегда следует использовать систему EDDTableFromFiles.\*\**Фильм псевдонимsourceNamesдля извлечения информации из имени файла (Почти всегда дата начала Время для записи) Пусть это будет колонка данных. Например,
<sourceName>\\*\\*\\*fileName,aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>
Формат времени должен быть указан как атрибут единицы:<Att name="units">yyyMMdd''HHmmss</att>
EDDGridИзображения MergeIRFiles
EDDGridИзображения MergeIRFiles агрегированные данные из локальных,ОбъединениеФайлы, которые принадлежатМиссия измерения тропических осадков (ТРММ) Это совместная миссия НАСА и Японского агентства аэрокосмических исследований. (Джакса) . слияние IR файлы можно скачать изНАСА.
EDDGridFromMergeIRFiles.java была написана и внесла свой вклад вERDDAP™Проект Джонатана Лафит и Филиппа Маковски из R.Tech Engineering (Лицензия: авторское право open source) .
EDDGridИз MergeIRFiles немного необычно:
- EDDGridFromMergeIRFiles поддерживает сжатые или несжатые исходные файлы данных в любой комбинации в одном наборе данных. Это позволяет сжимать старые файлы, к которым редко обращаются, но не сжимать новые файлы, к которым часто обращаются. Или вы можете изменить тип сжатия с оригинала. Например, Z,.gz.
- Если у вас есть сжатые и несжатые версии одних и тех же файлов данных в одном и том же каталоге, пожалуйста, убедитесь, что<FileNameRegex> для вашего набора данных соответствует именам файлов, которые вы хотите, чтобы он соответствовал, и не соответствует именам файлов, которые вы не хотите, чтобы он соответствовал.
- Несжатые исходные файлы данных не должны иметь расширения файла (т.е. "нет" в имени файла) .
- Сжатые исходные файлы данных должны иметь расширение файла, ноERDDAP™определяет тип сжатия путем проверки содержимого файла, а не путем просмотра расширения файла; (Например, ".Z") . Поддерживаемые типы сжатия включают «gz», «bzip2», «xz», «lzma», «snappy-raw», «snappy-framed», «pack200» и «z». КогдаERDDAP™читает сжатые файлы, декомпрессирует на лету, не записывая на временный файл.
- Все исходные файлы данных должны использовать исходную систему именования файлов: т.е. YYYYMMDDHH \_4km-пиксель (где YYYYMMDDHH указывает время, связанное с данными в файле) плюс расширение файла, если файл сжат.
Смотрите суперкласс этого класса,EDDGridИз материаловДля получения общей информации о том, как работает этот класс и как его использовать.
Мы настоятельно рекомендуем использоватьГенерировать наборы данных Программа XmlЧтобы составить приблизительный проектdatasets.xmlКусок для этого набора данных. Затем вы можете отредактировать это, чтобы настроить его.