Как отформатировать наборы данных netCDF для совместимости со службами Thredds OGC - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть набор данных netcdf, полученный из модели LIS NASA, который я хочу показать через WMS с использованием сервера Thredds. Определенный сервер набора данных и thredds можно найти по адресу https://tethys.byu.edu/thredds/catalog/testAll/anomaly/catalog.html, где вы также можете загрузить набор данных.

Все переменные набора данных имеют измерения времени, ансамбля, широты и долготы, а некоторые переменные имеют дополнительные измерения. Для этих измерений есть соответствующие переменные. Когда я открываю конечную точку wms для просмотра xml, я вижу под слоями, что есть

<Layer>
<Title>LIS land surface model output</Title>
</Layer>

Но нет списка переменных под ним. Я не могу найти никакой документации о требуемой структуре netcdf для Thredds, и я попытался сравнить это с другими наборами данных, которые работают, чтобы искать различия, но я застрял. Файлы каталога настроены таким образом, что вы можете читать файлы .nc, предоставлять службы wms и т. Д.

Что мне нужно изменить, чтобы сделать этот файл читаемым для thredds?

1 Ответ

0 голосов
/ 30 апреля 2019

Сервер данных THREDDS (TDS) поставляется с сервером WMS, называемым ncWMS, в качестве плагина. Короткий ответ заключается в том, что я не думаю, что ncWMS работает для данных с измерением ансамбля, поскольку, как представляется, не существует способа запроса члена ансамбля через запрос getMap .

Если мое понимание неверно, и ncWMS будет поддерживать данные с измерением ансамбля, тогда вам нужно убедиться, что netCDF-java распознает измерение / переменную ансамбля в вашем примере набора данных (чего в настоящее время нет). Первая проблема заключается в том, что netCDF-java не видит переменную ансамбля в качестве координатной переменной. Чтобы это исправить, вы можете добавить атрибут _CoordinateAxisType в переменную ensemble, чтобы сообщить netCDF-Java, что это переменная координат. Вы можете сделать это с помощью NcML, так что вам не нужно будет переписывать файл:

<?xml version="1.0" encoding="UTF-8"?>
<ncml:netcdf xmlns:ncml="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" location="/path_to_file/processed_LIS_HIST_201908010000.d01.nc">
  <ncml:variable name="ensemble">
    <ncml:attribute name="_CoordinateAxisType" value="Ensemble" />
  </ncml:variable>
</ncml:netcdf>

Однако переменная ensemble в вашем примере набора данных имеет два измерения, [ensemble, time], которые netCDF-Java в настоящее время не обрабатывает. Удивительно (вероятно, из-за того, что измерение времени имеет размер 1), netCDF-Java и NcML могут выполнить эту задачу еще раз с добавлением элемента logicalReduce в NcML:

<?xml version="1.0" encoding="UTF-8"?>
<ncml:netcdf xmlns:ncml="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" location="/path_to_file/processed_LIS_HIST_201908010000.d01.nc">
  <ncml:variable name="ensemble">
    <ncml:attribute name="_CoordinateAxisType" value="Ensemble" />
    <ncml:logicalReduce dimNames="time" />
  </ncml:variable>
</ncml:netcdf>

На этом этапе netCDF-Java сможет полностью распознавать сетки в вашем примере набора данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...