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

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 области и учеными в федеральном агентстве. (NOAANASA, USGS) королевство.

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

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

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

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

Один файл EML может иметь несколько<данные Table>s.ERDDAP™сделать одинERDDAP™Набор данных для EML dataTable. ThedatasetIDДля набора данных является Имя 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 находит различия, решает их или спрашивает оператора, в порядке ли эти различия, или возвращает сообщение об ошибке. Подробности приведены в различных пунктах ниже.  

.zipd Файлы данных

Если файл данных является.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 год этого не произошло. TheERDDAP™Разработчики будут рады добавить поддержку более поздних версий EML, но только в том случае, если новые функции действительно будут использоваться. Пожалуйста, emailerd.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 не использует формальный словарь / систему. (какJavaJoda 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\_values не пойманы.

Было бы неплохо, если бы 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, но только в том случае, если новые функции действительно будут использоваться. Пожалуйста, emailerd.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