Пропустить основной контент

EDDTable FromEML и EDDTable FromEMLBatch Варианты генерации наборов данных Xml

\[ Эта страница будет представлять интерес только для ERDDAP™ администраторы, работающие с файлами EML. Этот документ изначально был создан в 2016 году. Последний раз его редактировали в 2020-11-30 годах. \]

** ERDDAP™ ** Это сервер данных, который дает пользователям простой, последовательный способ загрузки подмножеств сетчатых и табличных научных наборов данных в общих форматах файлов и создания графиков и карт. ERDDAP™ работает с данным набором данных как группа многомерных сетчатых переменных (Например, данные спутников или моделей) или как таблица, подобная базе данных (столбец для каждого типа информации и строка для каждого наблюдения) . ERDDAP™ Бесплатное программное обеспечение с открытым исходным кодом, поэтому любой может скачать и установить ERDDAP™ служить их данным.

Чтобы добавить набор данных в ERDDAP™ установка, ERDDAP™ Администратор должен добавить фрагмент XML, описывающий набор данных, в файл, называемый datasets.xml . (Существует тщательная документация для datasets.xml .) Хотя можно сгенерировать фрагмент XML для datasets.xml полностью вручную, ERDDAP™ Он поставляется с инструментом под названием Генерировать наборы данныхXml который может генерировать черновой проект фрагмента XML, необходимого для данного набора данных, на основе некоторого источника информации о наборе данных.

Первое, что генерирует наборы данных Xml спрашивает, какой тип набора данных вы хотите создать. Генерировать наборы данных Xml имеет специальный вариант. EDDTable FromEML которая использует информацию в Экологический язык метаданных (ЭМЛ) XML файл для создания фрагмента XML для datasets.xml Чтобы создать EDDTableFromAsciiFiles Набор данных из каждой таблицы данных в файле EML. Это очень хорошо работает для большинства файлов EML, в основном потому, что файлы EML отлично справляются с хранением всех необходимых метаданных для набора данных в удобном для работы формате. Информация, необходимая GenerateDatasetsXml для создания наборов данных, находится в файле EML, включая URL-адрес файла данных, который GenerateDatasetsXml загружает, анализирует и сравнивает с описанием в файле EML. (Многим группам было бы полезно перейти на EML, которая является отличной системой для документирования любого табличного научного набора данных, а не только экологических данных. И многие группы, создающие XML-схемы, могли бы использовать EML в качестве примера для XML-схем, которые являются ясными, а не слишком глубокими. (Слишком много уровней) Для людей и компьютеров легко работать.)

Вопросы

Вот все вопросы GenerateDatasets Xml спросит, с комментариями о том, как вы должны ответить, если вы хотите обработать только один файл EML или партию файлов EML:

  • Какого типа? Если вы хотите обработать только один файл, ответ: EDDTableFromEML Если вы хотите обработать группу файлов, ответьте: EDDTableFromEMLBatch
  • Каталог для хранения файлов? Введите имя каталога, который будет использоваться для хранения загруженных файлов EML и / или данных. Если каталога не существует, он будет создан.
  • (Для EDDTable FromEML только) EML URL или локальное имя файла? Введите URL или локальное имя файла EML.
  • (Только для EDDTable FromEMLBatch) EML dir (URL или локальный) ? Введите имя каталога с файлами EML (URL или локальный дир) . Например:http://sbc.lternet.edu/data/eml/files/
  • (Только для EDDTable FromEMLBatch) Файловый регекс? Введите обычное выражение, которое будет использоваться для идентификации желаемых файлов EML в каталоге EML. Например: knb-lter-sbc\.\d+
  • Используйте локальные файлы при наличии (истинный | ложный) ? Введите верно использовать существующие локальные файлы EML и файлы данных, если они существуют. Введите ложные данные, чтобы всегда повторно загружать файлы EML и / или файлы данных.
  • доступный За? Если вы хотите, чтобы новые наборы данных были частными ERDDAP , указать название группы (s) Это позволит получить доступ. Рекомендуется для групп LTER: комбинировать «lter» плюс группу, например, lter. СБК. Если вы войдете в «нуль», то не будет<доступный To> тег в выходе. Видишь? доступный To .
  • местный Зона времени (Например, США/Тихоокеанский регион) ? Если временная переменная указывает, что она имеет локальные временные значения, этот часовой пояс будет присвоен. Это должна быть ценность от TZ столбец список названий часовых поясов . В конце списка обратите внимание на все простые в использовании названия «США/...». Если позже вы обнаружите, что это неправильно, вы можете изменить time\_zone В куске datasets.xml .

EML плюс ERDDAP™ Это отличное сочетание, так как ERDDAP™ Это может дать пользователям более прямой доступ к богатству. Сеть знаний о биокомплексности (КНБ) и Долгосрочные экологические исследования (LTER) Помогите этим проектам соответствовать требованиям правительства США Публичный доступ к результатам исследований (ПАРР) требования сделать данные доступными через веб-сервис. Кроме того, EML плюс ERDDAP™ Похоже на большой мост между учеными в академической / финансируемой NSF области и учеными в федеральном агентстве. ( NOAA NASA, USGS) королевство.

Увидеть наш Раздел о дополнительной поддержке .  

Детали дизайна

Вот детали дизайна опции EDDTableFromEML в GenerateDatasetsXml. Некоторые из них связаны с различиями в том, как ЭМЛ и ERDDAP™ Делать вещи и как генерировать наборы данных Xml решает эти проблемы.

DataTable становится одним из ERDDAP™ Набор данных

Один файл EML может иметь несколько<данные Table>s. ERDDAP™ сделать один ERDDAP™ Набор данных для EML dataTable. The datasetID Для набора данных является Имя EML \t таблица (Когда EMLname является текстовым) или Система_EMLName \t таблица (Когда EMLname является числом) . Например, таблица #1 в файле knb-lter-sbc.28, становится ERDDAP™ datasetID =knb\_lter\_sbc\_28\_t1,  

EML против CF+ACDD

Почти все метаданные в файлах EML попадают в ERDDAP Но в другом формате. ERDDAP™ использует CF и ACDD Стандарты метаданных. Они являются комплементарными системами метаданных, которые используют пары ключ = значение для глобальных метаданных и для метаданных каждой переменной. Да, представление метаданных EML лучше, чем представление CF+ACDD. Я не предлагаю использовать представление CF+ACDD в качестве замены EML. Пожалуйста, подумайте о CF+ACDD как о части моста из мира EML в мир EML. OPeNDAP Мир CF/ACDD.  

Небольшие изменения

ERDDAP™ Вносит много небольших изменений. Например, ERDDAP™ Использует EML non- DOI альтернативный Идентификатор плюс дататабельный номер как ERDDAP™ datasetID Но небольшие изменения чередуются Идентификатор, чтобы сделать его действительным переменным именем в большинстве компьютерных языков, например, данные knb-lter-sbc.33 Таблица #1 становится knb\_lter\_sbc\_33\_t1.  

Докбук

EML использует систему разметки DocBook для обеспечения структуры блоков текста в файлах EML. CF и ACDD требуют, чтобы метаданные были простым текстом. Генерировать наборы данных Xml преобразует размеченный текст в простой текст, который выглядит как отформатированная версия текста. Встроенные теги дезинфицируются квадратными скобками, например, \[ подчеркнуто \] и оставил в простом тексте.  

Файлы данных

Поскольку EML dataTable включает URL фактического файла данных, GenerateDatasets Xml будет:

  1. Загрузите файл данных.
  2. Храните его в том же каталоге, что и файл EML.
  3. Прочитайте данные.
  4. Сравните описание данных в EML с фактическими данными в файле.
  5. Если генерировать наборы данных Xml находит различия, решает их или спрашивает оператора, в порядке ли эти различия, или возвращает сообщение об ошибке. Подробности приведены в различных пунктах ниже.  

.zip d Файлы данных

Если файл данных является .zip Файл должен содержать только один файл. Этот файл будет использоваться для ERDDAP™ набор данных. Если имеется более 1 файла. ERDDAP™ Мы отклоним этот набор данных. При необходимости это можно изменить. (На практике все Zip-файлы SBC LTER имеют только один файл данных.)
 

Тип хранилища

Если склад колонны Тип не уточняется, ERDDAP™ использует свою лучшую догадку на основе данных в файле данных. Это работает довольно хорошо.  

Подразделения

ERDDAP™ использование UDUNITS Форматирование для единиц . Генерировать наборы данных Xml может преобразовывать EML в UDUNITS Чисто примерно в 95% случаев. Остальные 5% приводят к читабельному описанию единиц, например, «biomassDensityUnitPerAbundanceUnit» в EML становится «единицей плотности биомассы на единицу изобилия». ERDDAP . Технически это запрещено. Я не думаю, что это так плохо в данных обстоятельствах. \[ При необходимости, единицы, которые не могут быть изготовлены. UDUNITS Совместимость может быть перенесена на атрибут комментария переменной. \]
 

EML версия 2.1.1

Эта поддержка файлов EML v2.1.1 была добавлена в наборы данных Xml в 2016 году с надеждой, что в сообществе EML будет некоторое поглощение. По состоянию на 2020 год этого не произошло. The ERDDAP™ Разработчики будут рады добавить поддержку более поздних версий EML, но только в том случае, если новые функции действительно будут использоваться. Пожалуйста, email erd.data at noaa.gov Если вам нужна поддержка более поздних версий EML, вы можете использовать эту функцию.  

Проблемы с файлами EML

Есть некоторые проблемы с файлами EML, которые вызывают проблемы, когда клиент программного обеспечения (EDDTableFromEML в GenerateDatasetsXML) Пытается интерпретировать / обрабатывать файлы EML.

  • Хотя здесь перечислено несколько проблем, они в основном небольшие, решаемые проблемы. В целом, EML — отличная система, и мне было приятно работать с ней.
  • Они примерно отсортированы от худших / наиболее распространенных до наименее плохих / менее распространенных.
  • Большинство из них связаны с небольшими проблемами в определенных файлах EML. (которые не являются виновниками) .
  • Большинство из них могут быть исправлены простыми изменениями в файле EML или файле данных.
  • Учитывая, что люди LTER создают EML-проверку для проверки достоверности файлов EML, я добавил некоторые предложения ниже относительно функций, которые могут быть добавлены в проверочную систему.

Вот вопросы:

Отдельные столбцы даты и времени

Некоторые файлы данных имеют отдельные столбцы для даты и времени, но нет единой столбца даты + времени. В настоящее время генерируют наборы данных Xml создает набор данных с этими отдельными столбцами, но это не идеально, потому что:

  • Лучше всего, если данные в ERDDAP™ Комбинированная колонка «дата + время» называется "time" .
  • Часто набор данных не загружается в ERDDAP™ Потому что "time" Колонка не содержит данных о дате + времени.

Есть два возможных решения:

  1. Редактировать исходный файл данных, чтобы добавить новую колонку в файл данных (Опишите это в EML) где столбцы даты и времени сливаются в одну колонку. Скачать GenerateDatasets Xml находит новую колонку.
  2. Используйте Производные переменные особенность в ERDDAP™ Для определения новой переменной в datasets.xml который создается путем объединения колонок даты и времени. Один из примеров касается именно этой ситуации.  

Непоследовательные названия колонн

В файлах EML перечислены столбцы файла данных и их имена. К сожалению, они часто отличаются от названий колонок в реальном файле данных. Обычно порядок столбца в файле EML такой же, как порядок столбца в файле данных, даже если имена немного различаются, но не всегда. Генерировать наборы данных Xml пытается сопоставить названия колонок. Когда не может (который является общим) Он остановится, покажет вам пары EML/data и спросит, правильно ли они выровнены. Если вы введете «s», чтобы пропустить таблицу, GeneratedDatasetsXml напечатает сообщение об ошибке и перейдет к следующей таблице. Решение состоит в том, чтобы изменить ошибочные имена столбцов в файле EML, чтобы сопоставить имена столбцов в файле данных.  

Разный колонный порядок

Существует несколько случаев, когда EML указывает столбцы в другом порядке, чем они существуют в файле данных. Генерировать наборы данных Xml остановится и спросит оператора, все ли в порядке, или набор данных должен быть пропущен. Если он пропущен, в файле результатов будет сообщение об ошибке, например:

      &lt;-- SKIPPED (USUALLY BECAUSE THE COLUMN NAMES IN THE DATAFILE ARE IN
A DIFFERENT ORDER OR HAVE DIFFERENT UNITS THAN IN THE EML file):
datasetID=knb\\_lter\\_sbc\\_17\\_t1
dataFile=all\\_fish\\_all\\_years\\_20140903.csv
The data file and EML file have different column names.
ERDDAP™ would like to equate these pairs of names:
SURVEY\\_TIMING = notes
NOTES = survey\\_timing
--&gt;

Решение состоит в том, чтобы исправить порядок столбца в этих файлах EML, чтобы они соответствовали порядку в файлах данных.

Было бы неплохо, если бы EML проверял, что столбцы и порядок столбцов в исходном файле соответствуют столбцам и порядку столбцов в файле EML.

Неправильные numHeaderLines

Несколько данных В таблицах неправильно указано numHeaderLines=1, например...sbc.4011. Это вызывает ERDDAP™ читать первую строку данных как имена колонок. Я попытался вручную перехватить все эти таблицы данных. Они очевидны, потому что непревзойденные имена источников являются значениями данных. И если есть файлы, которые неправильно имеют numHeaderLines=0, моя система не делает это очевидным. Вот пример из файла сбоев SBC LTER:

      &lt;-- SKIPPED (USUALLY BECAUSE THE COLUMN NAMES IN THE DATAFILE ARE IN
A DIFFERENT ORDER OR HAVE DIFFERENT UNITS THAN IN THE EML file):
datasetID=knb\\_lter\\_sbc\\_3017\\_t1
dataFile=MC06\\_allyears\\_2012-03-03.txt
The data file and EML file have different column names.
ERDDAP™ would like to equate these pairs of names:
2008-10-01T00:00 = timestamp\\_local
2008-10-01T07:00 = timestamp\\_UTC
2.27 = discharge\\_lps
-999.0 = water\\_temperature\\_celsius
--&gt;

Таким образом, ошибка может выглядеть как генерация наборов данных. Xml считает, что первая строка с данными в файле (Например, с 2008-10-01T00:00 и т.д.) Линия с названиями колонок (как если бы 2008-10-01T00:00 был колонкой) .

Было бы неплохо, если бы EML-чекер проверил значение numHeaderLines.

numHeaderLines = 0

Некоторые исходные файлы не имеют названий колонок. ERDDAP™ Допустим, что EML описывает одинаковое количество столбцов.

На мой взгляд, это кажется очень опасным. Колонны могут быть в другом порядке или с разными блоками. (см. ниже) И нет никакого способа решить эти проблемы. Гораздо лучше, если все файлы данных ASCII имеют строку с именами столбцов.

Формат формата DateTime

EML имеет стандартный способ описания форматов времени. Однако существуют значительные различия в его использовании в файлах EML. (Раньше я ошибался по этому поводу. Я вижу документацию EML для формата String, которая, кажется, соответствует Java Спецификация DateTimeFormatter , но в котором отсутствуют важные рекомендации по его использованию, в результате чего часто/обычно используется неправильно.) Есть несколько случаев с неправильным случаем и/или неправильным дублированием письма, и/или нестандартным форматированием. Это создает неоправданное бремя для клиентов, особенно для программных клиентов, таких как GenerateDatasetsXml. Генерировать наборы данных Xml пытается преобразовать неправильно определенные форматы в файлы EML. Формат даты/времени, который ERDDAP™ требует который практически идентичен для Java Спецификация формата времени Joda, но немного более прощающая.

Было бы неплохо, если бы EML-проверка требовала строгого соблюдения правил. Java /Джода/ ERDDAP Спецификация единиц времени и проверка того, что значения времени даты в таблице данных могут быть правильно разобраны с указанным форматом.

Дата, но нет часового пояса

Генерировать наборы данных Xml ищет колонку с датой Время и определенный часовой пояс (либо Zulu : от единиц времени, заканчивающихся на 'Z' или название колонки или определение атрибута, которое включает в себя "gmt" или "utc", или локальное: от "местного" в названии колонки или определении атрибута) . Также приемлемым является файл с столбцом даты, но без столбца времени. Также приемлемым является файл без информации о дате или времени.

Генерировать наборы данных Xml рассматривает все «местные» времена как находящиеся в часовом поясе, который вы можете указать для данной партии файлов, например, для SBC LTER, используйте US / Pacific. Информация иногда находится в комментариях, но не в форме, которую легко понять компьютерной программе.

Файлы, не соответствующие этим критериям, отклоняются сообщением "НЕТ ДОБРОЙ ДЕНЬ" (Время) Вариабельно". Общими проблемами являются:

  • Есть колонка с датами и колонка со временем, но нет даты. Колонка времени.
  • Есть временные единицы, но часовой пояс не указан.

Другие комментарии: Если есть хорошая дата + время с колонкой часового пояса, эта колонка будет названа. "time" в ERDDAP . ERDDAP™ требует, чтобы данные столбца времени были понятными/конвертируемыми Zulu /UTC/GMT time zone dateTimes. \[ Я считаю, что использование местного времени и различных форматов даты / времени (2-значный год! mm/dd/yy vs. dd/mm/yy vs.) в файлах данных вынуждает конечного пользователя выполнять сложные преобразования Zulu время для сравнения данных из одного набора данных с данными из другого. Так ERDDAP™ Стандартизация всех временных данных: Для струнных времен, ERDDAP™ Всегда использует ISO 8601:2004 (Е) стандартный формат, например, 1985-01-02T00:00:00Z. В численное время, ERDDAP™ всегда использует "seconds since 1970-01-01T00:00:00Z" . ERDDAP™ всегда использует Zulu (UTC, GMT) часовой пояс для устранения трудностей работы с различными часовыми поясами и стандартным временем по сравнению с летним временем. Генерировать наборы данных Xml ищет столбец EML dataTable с датой + временем Zulu . Это сложно, потому что EML не использует формальный словарь / систему. (как Java Joda Time Формат ) для уточнения данных Формат времени: Если есть col с числовыми значениями времени (например, Matlab время) и Zulu часовой пояс (или просто даты, без колонок времени) используется как "time" . Если есть код с данными о дате и времени, используя Zulu часовой пояс, используется как "time" и любой другой столбец даты или времени удаляется. Если найдена коль с информацией только о дате, она используется как "time" переменный (Без часового пояса) . Если есть столбец данных и столбец времени и нет комбинированной даты Колонка времени, набор данных отключен, но набор данных может быть использован путем добавления комбинированной даты. Колонка времени (предпочтительно, Zulu часовой пояс) в файл данных и добавление его описания в файл EML. Пример из SBC LTER: https://sbclter.msi.ucsb.edu/external/InformationManagement/eml\_2018\_erddap/ DataTable #2.

Было бы неплохо, если бы EML/LTER требовал включения колонки с Zulu (UTC, GMT) Время часового пояса во всех соответствующих файлах исходных данных. Лучше всего добавить систему в EML, чтобы указать time\_zone Атрибут, использующий стандартные имена (из которого колонка TZ ) .

Пропавший missing\_value

Некоторые колонки используют missing\_value но не перечислите его в метаданных EML, например, осадки\_mm в knb-lter-sbc.5011 использует -999. Если в EML не указано недостающее значение, GenerateDatasetsXml автоматически ищет общие недостающие значения. (Например, 99, -99, 999, -999, 9999, -9999 и т.д.) и создает эти метаданные. Другие пропавшие missing\_value s не пойманы.

Было бы неплохо, если бы EML-чекер искал пропавших без вести. missing\_value С.

Маленькие проблемы

Есть много мелких проблем (орфография, пунктуация) Это может быть найдено только человеком, проверяющим каждый набор данных.

Было бы неплохо, если бы EML-чекер искал орфографические и грамматические ошибки. Это сложная проблема, потому что слова в науке часто помечаются орфографическими чекерами. Человеческое редактирование, вероятно, необходимо.

Недействительные символы Unicode

Часть содержимого EML содержит недействительные символы Unicode. Вероятно, это символы из набора Windows, которые были неправильно скопированы и вставлены в файлы UTF-8 EML. Генерировать наборы данных Xml дезинфицирует этих персонажей, например, \[ #128 \] Поэтому их легко найти в ERDDAP™ datasets.xml Файл.

Было бы неплохо, если бы EML проверял это. Его легко найти и легко исправить.

Различные колонны. (#разные колонны)

Некоторые EML dataTables определяют столбцы, которые несовместимы с столбцами в файле данных, в частности, потому, что они имеют разные блоки. Генерировать наборы данных Флаги Xml. Оператор должен решить, в порядке эти различия или нет. Они отображаются в файле сбоев как «SKIPPED» dataTables. Пример в файле сбоев SBC LTER:

      < SKIPPED (USUALLY BECAUSE THE COLUMN NAMES IN THE DATAFILE ARE IN
A DIFFERENT ORDER OR HAVE DIFFERENT UNITS THAN IN THE EML file):
datasetID=knb\\_lter\\_sbc\\_3\\_t1
dataFile=SBCFC\\_Precip\\_Daily\\_active\\_logger.csv
The data file and EML file have different column names.
ERDDAP™ would like to equate these pairs of names:
Daily\\_Precipitation\\_Total\\_mm = Daily\\_Precipitation\\_Total\\_inch
Flag\\_Daily\\_Precipitation\\_Total\\_mm = Flag\\_Daily\\_Precipitation\\_Total\\_inch
-->

Было бы неплохо, если бы EML-регистратор проверил соответствие единиц. К сожалению, это, вероятно, невозможно поймать, а затем невозможно решить, не связавшись с создателем набора данных, учитывая, что исходный файл не содержит блоков. Несоответствие для примера выше было заметно только потому, что единицы были включены в название колонки источника и название колонки EML. Сколько других планшетов имеют эту проблему, но их невозможно обнаружить?

Различные версии EML

Генерировать наборы данных Xml предназначен для работы с EML 2.1.1. Другие версии EML будут работать в той степени, в которой они соответствуют 2.1.1 или что GenerateDatasetsXml имеет специальный код для работы с ним. Это редкая проблема. Когда это происходит, решение заключается в преобразовании ваших файлов в EML 2.1.1 или отправке файла EML на erd.data at noaa.gov Чтобы я мог вносить изменения в наборы данных Xml для устранения различий.

Боб добавил поддержку файлов EML в GenerateDatasets Xml в 2016 году с надеждой, что в сообществе EML будет некоторое поглощение. По состоянию на 2020 год этого не произошло. Боб рад добавить поддержку более поздних версий EML, но только в том случае, если новые функции действительно будут использоваться. Пожалуйста, email erd.data at noaa.gov Если вам нужна поддержка более поздних версий EML, вы можете использовать эту функцию.

Проблемы с парсингом файла данных

Редко, датаТаблица может быть отклонена с ошибкой "неожиданное количество элементов на линии #120" (Наблюдаемый = 52, ожидаемый = 50) " Сообщение об ошибке, подобное этому, означает, что строка в файле данных имела другое количество значений, чем другие строки. Это может быть проблемой в ERDDAP™ (Например, не правильно разбирать файл) или в файле. Пример из SBC LTER: https://sbclter.msi.ucsb.edu/external/InformationManagement/eml\_2018\_erddap/ dataTable #3, см. datafile=LTER\_monthly\_bottledata\_registered\_stations\_20140429.txt