Более

Проблема отображения WMS с EPSG: проекция 3301 с помощью Leaflet

Проблема отображения WMS с EPSG: проекция 3301 с помощью Leaflet


Я пытаюсь показать wms-слой EPSG: 3301 с помощью листовки, но долгое время безуспешно. http://kaart.maaamet.ee/wms/alus?service=WMS&version=1.3.0&request=GetCapabilities Вот мой код:

function initialize () {var crs = L.CRS.proj4js ('EPSG: 3301', '+ proj = lcc + lat_1 = 59,33333333333334 + lat_2 = 58 + lat_0 = 57,51755393055556 + lon_0 = 24 + x_0 = 500000 + y_0 = 6375000 + ellps = GRS80 + towgs84 = 0,0,0,0,0,0,0 + units = m + no_defs ', new L.Transformation (1, -40500, -1, 7017000)); var wmsMap = L.tileLayer.wms ('http://kaart.maaamet.ee/wms/alus', {слои: 'MA-ALUS', формат: 'image / png', maxZoom: 14, minZoom: 3, ContinuousWorld: true, transparent: true}); var map = L.map ('карта', {слои: [wmsMap], continuousWorld: true, center: new L.LatLng (58.66, 25.05), zoom: 2, maxZoom: 13, minZoom: 1, maxBounds: new L .LatLngBounds ([[56.42, 20.87], [60.9, 29.23]]), crs: crs});

Пожалуйста, проверьте мой код, чтобы узнать, что с ним не так ?? Я вижу область карты, вижу атрибуты и переключатель слоев, если я их добавляю, но не карту.


Вот рабочий код вашей проблемы: http://jsfiddle.net/GFarkas/rkhzfguz/1/

Некоторые объяснения в неправильных строках:

var crs = L.CRS.proj4js ('EPSG: 3301', '+ proj = lcc + lat_1 = 59,33333333333334 + lat_2 = 58 + lat_0 = 57,51755393055556 + lon_0 = 24 + x_0 = 500000 + y_0 = 6375000 + ellps = GRS80 + towgs84 = 0,0,0,0,0,0,0 + units = m + no_defs ', новый L.Transformation (1, -40500, -1, 7017000));

Прежде всего, правильное имя функции, как вы можете видеть в руководстве по проекту Proj4Leaflet, -L.Proj.CRS. Кроме того, вы должны позвонить вновыйэкземпляр функции (здесь есть отличная статья о конструкторах и экземплярах).

Первые два аргументаL.Proj.CRSКонструктор принимает имя и определение проекции. Все идет нормально. Однако третий и последний аргумент - это объект опций. Более ясно, вы должны заключить параметры опции в фигурные скобки и называть их соответствующими именами (например,трансформация: новый L.Transformation (1, -40500, -1, 7017000)). Этот метод вызова с двоеточием называется KVP (пары ключ-значение).

Последняя проблема заключается в том, что вам нужно определять разрешение на каждом уровне масштабирования. Вы определили 12 уровней масштабирования (3–14), поэтому вам нужно определить 12 значений разрешения или масштаба. При уровне масштабирования 0 обычное разрешение составляет 8192 м, и оно уменьшается вдвое на каждом уровне масштабирования.

Окончательный код этой части будет выглядеть примерно так:

var crs = new L.Proj.CRS ('EPSG: 3301', '+ proj = lcc + lat_1 = 59,33333333333334 + lat_2 = 58 + lat_0 = 57,51755393055556 + lon_0 = 24 + x_0 = 500000 + y_0 = 6375000 + эллипсы = GRS80 + Towgs84 = 0,0,0,0,0,0,0 + units = m + no_defs ', {разрешения: [1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0,5 ], преобразование: новый L.Transformation (1, -40500, -1, 7017000)});

Остальная часть кода работает, однако у меня есть два замечания, которые вы должны учитывать:

Проще и меньше кода настраивать вид карты индивидуально с помощьюmap.setView ()

Исходный код:

центр: новый L.LatLng (58.66, 25.05), увеличение: 2,

map.setView ()метод:

map.setView ([58.66, 25.05], 2);

Вы не должны называть уровень масштабирования, которого нет у вашего слоя, потому что это приведет к серому фону. Поэтому, если у вас нет других слоев в вашем инвентаре, вы должны вызвать уровень масштабирования 3 вместо уровня масштабирования 2. Тогда ваша карта будет отображаться нормально, и вы не будете сбиты с толку, работает ваш код или нет.


Изображения отображаются красным цветом, потому что запрос не привел к получению действительного изображения карты.

Вот как вы отлаживаете такую ​​проблему:

  • Откройте страницу в FireFox или Chrome.
  • Затем сохраните одно из красных изображений на диск.
  • Откройте сохраненный файл в текстовом редакторе.

Теперь похоже, что вы не запрашиваете изображения, а запрашиваете возможности сервера.

Вы, вероятно, вставили URL-адрес сервера в свой код, но вы вставили URL-адрес, который запрашивает, что сервер может делать и что он поддерживает.

Итак, просто удалите эту часть из URL-адреса: request = GetCapabilities

Таким образом, он становится: http://sampleserver1.arcgisonline.com/ArcGIS/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/WMSServer?service=WMS

Сохраните HTML и обновите.

Хорошо, сейчас мы действительно запрашиваем изображения, но вы по-прежнему ничего не получаете.

Итак, сделайте то же самое. Сохраните одно из красных изображений и посмотрите, что внутри.

На этот раз внутри сообщение об ошибке:

Похоже, вы запрашиваете слой под названием "Состояния", но этот слой не существует.

Просто укажите допустимый слой, и все готово. Похоже, что на сервере есть 2 уровня, называемые «1» и «2». Когда вы устанавливаете это в качестве слоя, красные изображения исчезают, но они, кажется, не содержат ничего интересного, но это еще одна проблема, с которой я не могу вам помочь, если я не получу больше информации.


Переход от статических пространственных систем отсчета в 2022 году

Это публикация @JimBaumann в ARCUSER.

В 2008 году Национальная геодезическая служба (NGS) объявила в своем 10-летнем плане замену двух национальных датумов страны: североамериканского датума 1983 года (NAD 83), геометрической системы координат, используемой в основном для горизонтальных позиций, и североамериканской вертикальной Датум 1988 г. (NAVD 88), вертикальный датум, используемый для определения ортометрических высот (превышений).

«Мы навсегда оставляем позади идею статичных, неизменных систем пространственной привязки. Это было хорошо известно геодезическому сообществу в течение некоторого времени. ". Подробнее об этом занятии ниже.


Фоновый слой OL3 gwc не выравнивается по сетке, работает в OL2

Я использую GeoServer 2.10.1 и его встроенный GeoWebCache, и пытаюсь использовать кэшированный фоновый слой в настраиваемой сетке с локальным epsg для работы в простом приложении Ol3:

Это создает карту с нечетким, «уменьшенным» изображением на каждом уровне масштабирования (но возвращенные плитки на самом деле выглядят хорошо, и view.getResolution сообщает правильное разрешение). GWC сообщает, что "не выравнивается по сетке" для каждого getMap.

Если я позволю OL вычислить уровни масштабирования, базовая карта будет выглядеть нормально.

вместо этого я получаю неверный запрос http 400 на запросы getMap.

Базовый слой используется как фоновая карта в приложении ol2, определенном таким же образом, т.е. экстент и ряд разрешений, и он работает хорошо.

Что требуется в OL3 для использования кэшированного фонового слоя?

Один ответ

Есть несколько вещей, которые вам нужно попробовать.

Убедитесь, что вы правильно настроили сетку плиток в geowebcache.xml и используете те же разрешения на стороне ol3.

В конфигурации просмотра добавьте минимальное, максимальное количество ресурсов. Вот так

В конфигурации вашего слоя листов рассмотрите недостающую конфигурацию тайловой сетки и определение SRS. Я думаю, что идентификаторы матриц имеют решающее значение.

Чтобы вычислить идентификаторы матриц, вам необходимо создать вспомогательную функцию. Вот так


Проблема при отображении WMS с EPSG: проекция 3301 с использованием Leaflet - Geographic Information Systems

Автор Крис Гуделл | 14 мая 2015 года

RAS Mapper - это окно в HEC-RAS, которое позволяет предварительно обрабатывать 2D-области, отображать результаты и управлять фоновыми изображениями. В будущих версиях HEC-RAS, RAS Mapper станет все более и более распространенным в нашем опыте моделирования HEC-RAS. Насколько я понимаю, в конечном итоге RAS Mapper и окно редактора геометрии могут объединиться, чтобы сформировать интерфейсный интерфейс для HEC-RAS, заменив иконическое «Главное окно RAS».

Но это домыслы. То, что не является предположением, заключается в том, что если вы хотите использовать HEC-RAS 5.0 для чего-то большего, чем очень простая модель, вам действительно не обойтись с помощью RAS Mapper, и, соответственно, ... Файл проекции! Файл проекции определяет конкретную географическую систему координат и проекцию и является чем-то новым для нас, разработчиков моделей HEC-RAS (на самом деле он был частью RAS Mapper с момента его создания, но теперь с 2D-моделированием и веб-изображениями в версии 5.0. , RAS Mapper становится неотъемлемой частью моделирования HEC-RAS). Файл проекции требует, чтобы мы кое-что знали о геопространственном картировании (например, ГИС), о чем нам действительно не нужно было знать слишком много раньше, как пользователям RAS. Но если вы хотите использовать RAS Mapper, и ты будешь, вам необходимо понять, что это за файл проекции и как его получить. Без него RAS Mapper практически бесполезен. Добавление файла проекции в наш проект RAS устанавливает геопространственную привязку проекта. Файлы проекции имеют расширение * .prj. Будьте осторожны, не перепутайте его с файлом проекта HEC-RAS, также с расширением * .prj. Оба они находятся в каталоге вашего проекта HEC-RAS, но только правильно отформатированный файл проекции будет работать в RAS Mapper для настройки вашей проекции.

Файл проекции на самом деле представляет собой простой текстовый файл с ключевыми словами в определенном формате. Фактически, это одна строка, записанная в формате «общеизвестного текста» или WKT. Он простой, удобный для чтения и был создан Открытый консорциум ГИС. Вот как выглядит файл проекции внутри. Обратите внимание, что есть некоторые ключевые слова, обозначенные заглавными буквами, за которыми следуют некоторые данные, относящиеся к ключевому слову, заключенные в квадратные скобки []. Я закодировал его разными цветами, чтобы было легче понять, что с чем сочетается. Фиолетовый цвет обозначает самый высокий порядок в иерархии, за ним следует синий, затем зеленый, затем красный. Другими словами, ключевое слово red является дочерним по отношению к ключевому слову green, зеленый - дочерним по отношению к синему, а синий - дочерним по отношению к фиолетовому.

Каждое ключевое слово и последующие данные в квадратных скобках называются «предложением». Первое и основное предложение, PROJCS, означает «Спроектированная система координат». Система координат проекции состоит из следующих подпунктов:

1. Географическая система координат (GEOGCS), которая основана на градусах широты и долготы и содержит горизонтальную опорную систему координат (DATUM) и опорный меридиан для измерений долготы (PRIMEM). DATUM также содержит описание формы Земли (СФЕРОИД), которая в приведенном выше примере является эллипсоидом Кларка 1866 года. Единицы (UNIT) здесь выводятся только для GEOGCS, в данном случае градусы.
2. Проекция (PROJECTION), которая представляет собой проекцию из географических координат (широта / долгота) в проецируемые координаты. По сути, это то, как трехмерный сфероид (Земля) проецируется на двумерную среду просмотра. В приведенном выше примере Поперечный Меркатор выбран, который использует Универсальная поперечная проекция Меркатора (UTM) система координат.

3. Различные значения параметров проекции (ПАРАМЕТР). Параметр указывается в кавычках, за которым следует его значение.
4. Единицы измерения проектируемой системы координат (UNIT). Здесь счетчики используются как линейные единицы с коэффициентом пересчета «1». Коэффициент преобразования переводит описанные единицы в метры. Если используется «FOOT_US», то коэффициент преобразования будет 0,30480060960121924.

В вашем файле прогноза могут быть некоторые дополнительные пункты, но перечисленные выше кажутся типичными. Все ключевые слова, используемые в формате WKT с описаниями, можно найти на GeoAPI. здесь.
Вы можете написать свои собственные файлы проекции и GeospatialPython.com представляет метод (есть и другие примеры, просто погуглите). Однако гораздо проще и практичнее найти уже скомпилированный файл проекции и использовать его. Если у вас уже есть проект HEC-RAS с географической привязкой, каждый шейп-файл, используемый для создания ваших геометрических компонентов (осевая линия потока, xscutlines, выкидные линии и т. Д.), Поставляется с файлом проекции. Просто найдите, где он хранится на вашем компьютере, и используйте его.

Если у вас нет файлов ГИС, которые использовались для создания проекта HEC-RAS с географической привязкой, вы можете найти файлы проекции как минимум в трех разных местах: в ArcGIS 10.0 или более ранней версии, Spacereference.org и в базе данных проекций EPSG. Если вы знаете других, оставьте комментарий ниже!

При использовании любого из этих источников убедитесь, что вы выбрали правильный файл проекции. Вы узнаете, правильный ли он, перенос веб-изображений в RAS Mapper и проверка, чтобы убедиться, что все выровнено пространственно правильно. ArcGIS (версии до 10.1) включает папку систем координат, которая содержит более 5000 географических, проекционных и вертикальных систем координат. К сожалению, в более новых версиях ArcGIS эта папка отсутствует. Если у вас есть ArcGIS 10.1 или новее или вообще нет ArcGIS, вы можете получить доступ к большой базе данных систем пространственной привязки по адресу http://spatialreference.org/

Если вы перейдете на сайт spacereference.org, убедитесь, что вы выбрали только ссылки EPSG, IAU2000 или Spacereference.org. Ссылки ESRI содержат только предложение GEOGCS в файле проекции, а не полное предложение PROJCS. Они не будут работать в RAS Mapper. Найдя нужный отпечаток, нажмите на него, затем выберите «.PRJ File» из списка доступных форматов. Затем файл проекции будет загружен на ваш компьютер, и вы будете готовы использовать его в RAS Mapper. Есть удобное поле поиска, которое позволяет искать по ключевым словам для справки. Например, если ваш проект находится на Гавайях и вы знаете, что ваша горизонтальная точка отсчета - NAD83, вы можете ввести ключевые слова: Гавайи NAD83, нажмите кнопку «Поиск», и вы увидите следующий список пространственных привязок:

Также доступна онлайн-база данных EPSG Projection Database, размещенная на GoogleCode на сайте geospatialpython.org. Здесь вы найдете текстовый файл из множества файлов проекции в правильном формате WKT, который можно легко скопировать и вставить в свой собственный файл проекции.

После того, как вы выбрали файл проекции и назначили его для RAS Mapper, дважды проверьте его правильность, добавление веб-изображений. Если все выровняется, можно идти. На рисунке ниже показан набор данных Muncie в RAS Mapper с назначенным неверным файлом проекции.

Очевидно, что наши линии тока и поперечные сечения в этом примере неправильно выровнены в Манси, Индиана, где они и принадлежат. Неправильный файл проекции попал в центр Альберты, Канада!

Переназначение правильного файла проекции возвращает модели к ее правильной пространственной привязке.

Кто-нибудь знает какие-либо другие источники файлов проекций, которые мы можем использовать в HEC-RAS? Если да, прокомментируйте ниже.

Комментарии

Анонимный

Я видел ваше сообщение о проекциях в вашем блоге и подумал, что было бы неплохо упомянуть, что теперь вы можете преобразовать систему координат модели в HEC-RAS.

Крис Гуделл

Кэм Акерман

HEC-RAS поддерживает формат ESRI WKT PRJ. Использование других форматов WKT - YMMV.

Кэм Акерман

HEC-RAS в настоящее время поддерживает формат ESRI WKT. Другие форматы WKT - YMMV.

Крис Гуделл

Спасибо за голову. Я полагаю, что все файлы prj на Spacereference.org следуют формату, используемому HEC-RAS (по крайней мере, те, которые я проверил), за исключением (по иронии судьбы) 447 ссылок ESRI. У них есть только пункт GEOGCS, ни один из остальных.

Анонимный

Могу ли я загрузить собственную ссылку WMS в RasMapper?

Потому что моя модель создана в S-JTSK / Krovak East North и bacgkround / WMS (ортофото, спутниковое изображение) в WGS-84. Когда я загружаю задний фон, моя модель вытесняется - эта ошибка предсказуема.

Крис Гуделл

Проекция, в которой была создана ваша модель, и проекция, которую вы загружаете в RAS Mapper, должны совпадать.

Роберт С

Крис подтвердил мою идею:
Когда вы работаете с другими проекциями координат как WGS84, вы не можете использовать серверы изображений WMS (RasMapper- Tools). В настоящее время RasMapper не поддерживает присоединение к другой WMS.
Вы должны решить фон, используя статическое изображение (изображение с географической привязкой)

Я надеюсь, что хорошо напишу, Крис!

Крис Гуделл

Роберт. Думаю, я лучше понимаю ваш вопрос (с помощью Кэмерона из HEC). Если вы перейдете в каталог проекта HEC-RAS, вы увидите папку с именем GDAL. Там вы увидите папку под названием Web Map Services. Там вы увидите XML-файл для каждой службы веб-изображений, доступной в HEC-RAS. Если вы хотите добавить больше сервисов веб-изображений, вы можете создать свой собственный xml и поместить его в этот каталог. Затем он должен появиться в окне веб-изображений в HEC-RAS. Если вы можете сделать это с помощью собственных веб-изображений, отправьте мне XML-файл, чтобы мы могли поделиться с другими.

Майк Чилсон

В ArcGIS 10.1+ просто добавьте проекцию в список избранного, и он создаст и разместит файл проекции по адресу:
C: Пользователи & quotUserName & quotAppDataRoamingESRIDesktop10.2ArcMapCoordinate Systems

Геррит К.

Я очень извиняюсь за любые загадочные части этого сообщения, но после нескольких часов исследования, почему венгерский EOV (унифицированная национальная проекция) неправильно проецируется в RAS Mapper, я обнаружил, что вся информация, чтобы сделать это правильно, доступна в библиотека GDAL, которую использует RAS Mapper.

Первоначально ошибочная проекция могла быть вызвана ошибкой в ​​значении параметра в источнике информации, но это уже давно исправлено, и исправление является частью файла библиотеки GDAL & # 39datum_shift.csv & # 39.

Фактически в этом файле перечислено 5 (!) Параметризаций сдвига нулевой точки (от «SEQ_KEY» 350 до «SEQ_KEY» 354), и любой из них будет гораздо более точным переключением с HD72 на WGS 84, чем текущая реализация.

Итак, реализована ли библиотека GDAL лишь частично? Или есть ошибка, которая не позволяет RAS Mapper применять предпочтительный сдвиг датума, определенный в файле библиотеки GDAL & # 39datum_shift.csv & # 39?

Крис Гуделл

Геррит - спасибо за информацию. Я не уверен, в чем может быть проблема. Я направлю других на ваш вопрос, чтобы посмотреть, сможем ли мы получить хороший ответ.

Привет, Крис, спасибо за этот пост. У меня проблема с моей геометрией, смещенной от реки / ландшафта WMS (см. Ссылку ниже). Я нашел обходной путь, отредактировав файл .prj вручную, но повлияет ли это на проекцию 2D-модели, например. карты наводнения?

Крис Гуделл

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

Неизвестный

Файл проекции важен только для RAS-Mapper или геометрии? Я унаследовал модель RAS, которая должна работать, они даже отправили окончательные результаты прогона. Я не могу запустить его из-за геометрической ошибки & # 8211, кажется, некоторые участки реки не совпадают правильно с соответствующими поперечными сечениями. Также некоторые плотины опускаются ниже отметки местности. Я считаю, что эти проблемы могут быть из-за отсутствия файла прогноза.

Крис Гуделл

Похоже на ошибки в настройке геометрии. Не должно иметь ничего общего с проекцией.

Колин Холдграфер

У меня есть проект, в котором RAS Mapper отлично отображал карту, используя файл проекции UTM Zone 15 NAD83 (в метрах), но когда я преобразовал проект из метров в футы с помощью Options- & gtConvert Project Units, карта больше не работала. Как изменить файл проекции для нового проекта, чтобы он отображал проект в нужном месте? Или имеет смысл загрузить новый файл проекции на основе преобразования единиц измерения? И если да, то что это за новая горизонтальная точка отсчета?

Крис Гуделл

Вам нужно будет получить новый файл проекции (или создать свой собственный) с правильной системой единиц.

Колин Холдграфер

Дело в том, что проекция по-прежнему UTM Zone 15 NAD83 (метры), но сейчас она просто преобразована в футы.

Вот как изменились координаты после преобразования единиц измерения в определенной точке, где поперечное сечение пересекается с участком реки:

(Первоначально) метры: 451305.5383, 4625115.6106
(После преобразования) Ноги: 1480661.2147, 15174263.8183

Вот файл проекции формы, который я использовал перед преобразованием:

Как это следует изменить, чтобы мой проект не оказался в центре Северного Ледовитого океана после преобразования единиц измерения? Я попытался изменить UNIT ["Meter", 1]] на UNIT ["Feet ", 3.28084]], но, похоже, это не решило проблему.

Бен Снайдер

Я пытался разрешить загадочный горизонтальный сдвиг датума, который делает РАН в течение довольно долгого времени. Я экспортирую поверхность из Civil 3D, используя CA State Plane Zone 1, US Feet, EPSG 2225. Для моего последнего обходного теста я сделал файл проекции для RAS, который имеет те же данные проекции, что и Civil 3D tif. Когда я создаю новую местность, появляется надпись «То же, что и проект». Затем, когда я открываю редактор геометрии и смотрю на координаты ориентира, он отклоняется примерно на 12 футов в восточном направлении и на несколько метров в северном. Сдвига нет, когда я добавляю tif в ГИС, поэтому не похоже, что это проблема с экспортом Civil 3D. Я в тупике! Любые идеи? Это проблематично, потому что все растры результатов RAS смещаются и не выстраиваются в линию.

Бен Снайдер

Собственно, это сработало! Пользователям RAS, которые работают с Civil 3D, возможно, потребуется убедиться, что SRS «То же, что и проект», чтобы избежать таинственного сдвига. Но если они точно такие же, с ними все будет в порядке.

Анонимный

Здравствуйте, мне нужна ваша помощь. Я не могу заставить работать файл prj из: & quothttp: //spatialreference.org/&quot. Мне нужен & quotEPSG: 22174: POSGAR 98 / Argentina 4 & quot
Не могу найти ошибку. Большое спасибо.

Анонимный

Проект HEC-RAS устроен следующим образом:

• Единицы: обычные в США.
• Набор данных LiDAR
o Проекция государственной плоскости
o Горизонтальные единицы = международные футы
• Проекция, используемая в RAS Mapper
o Проекция государственной плоскости
o Горизонтальные единицы = метры

Аэрофотоснимок совмещен правильно. Но когда инструмент измерения используется в RAS Mapper, он дает расстояния в футах, но измерение показывает, что это должны быть метры. Например, расстояние, которое измеряется инструментом измерения 10 футов, на самом деле составляет 10 / 0,30458 = 32,8 фута. Будет ли эта модель давать правильные результаты или ландшафт, через который проходит поток, в основном сузился в 3,28 раза (1 / 0,3048)?

Крис Гуделл

Я думаю, это просто ошибка, и с тобой все в порядке. Но не забудьте дважды проверить.

Вы говорили об устройстве в этом посте.

Так что у меня аналогичный вопрос о блоке с HECRAS.

Вот мой случай. Мы работаем с партнерами из США в этом водоразделе (водораздел реки Сурис). Они отвечают за разработку и калибровку HECRAS, они используют английские единицы измерения, то есть футы во всех данных и расчетах. Затем мы используем эту модель в Канаде, однако мы используем SI в терминах потока, высоты, расстояния и т. Д.

Могу ли я использовать эту модель, просто переведя единицы измерения в СИ, или это неправильный способ использования данной модели. Правильный способ использования этой модели в Канаде - подготовить входной поток как английскую единицу, запустить модель и прочитать результаты в любых выбранных нами единицах. Думаю, эта мысль имеет смысл и подтверждена экспертами CivilGEO. Но Крис, мне все еще нравится знать твою мысль.

Крис Гуделл

Привет, Запад. Теоретически вы можете просто преобразовать вашу модель в другую систему единиц, используя опцию Конвертировать единицы проекта в главном окне RAS. Тем не менее, я был бы очень осторожен при этом, потому что, как известно, RAS имеет некоторые ошибки в этой утилите преобразования. По крайней мере, вам нужно проверить все после преобразования, чтобы убедиться, что оно было выполнено правильно. И не забывайте при необходимости обновлять файл прогноза. RAS не сделает этого автоматически.


Создание простой полноэкранной карты

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

Этот рецепт проведет вас через процесс создания нашего первого и очень простого приложения веб-карты.

Готовиться

Программирование с помощью OpenLayers в основном сводится к написанию HTML, CSS и, конечно же, JavaScript. Нам просто нужен текстовый редактор, чтобы начать кодировать наши рецепты. Доступен широкий выбор текстовых редакторов, так что выбирайте сами!

Наш HTML-файл будет включать некоторые ресурсы библиотеки OpenLayers. Хотя вы увидите наши примеры, ссылающиеся на эти ресурсы, мы не будем показывать вам содержимое этих больших файлов в этой книге. Чтобы продолжить, начните с загрузки последней версии исходного кода OpenLayers (http://openlayers.org/download/).

Вы можете найти исходный код этого примера в ch01 / ch01-full-screen-map /.

Как это сделать & hellip

Начнем с создания нового HTML-файла следующего содержания:

Вы заметите, что здесь связаны файлы OpenLayers ol.css и ol.js. Наши собственные файлы - style.css и script.js.

CSS OpenLayers (ol.css) содержит анимацию CSS3 и стили для элементов HTML, таких как элементы управления картой, то есть кнопки масштабирования карты и многое другое.

Используя лучшие практики, OpenLayers JavaScript (ol.js) и наш собственный файл JavaScript были включены непосредственно перед закрывающим тегом & lt / body & gt, чтобы избежать блокировки отрисовки страницы. Еще одним положительным результатом этого является то, что мы можем быть уверены, что DOM загрузилась до выполнения нашего JavaScript.

Затем создайте таблицу стилей (style.css) со следующим содержимым:

Этот комбинированный набор правил CSS приводит к расширению div так, что он полностью заполняет доступное пространство страницы. Использование селектора класса .map означает, что он будет нацелен на наш элемент & ltdiv & gt, который был создан ранее:

Скачивание примера кода

Вы можете загрузить файлы примеров кода для всех книг Packt Publishing, которые вы приобрели, из своей учетной записи на http://www.packtpub.com. Если вы приобрели эту книгу в другом месте, вы можете посетить http://www.packtpub.com/support и зарегистрироваться, чтобы получать файлы по электронной почте непосредственно вам.

Вы можете загрузить файлы кода, выполнив следующие действия:

Войдите или зарегистрируйтесь на нашем веб-сайте, используя свой адрес электронной почты и пароль.

Наведите указатель мыши на вкладку ПОДДЕРЖКА вверху.

Щелкните Загрузка кода и исправления.

Введите название книги в поле поиска.

Выберите книгу, для которой вы хотите загрузить файлы кода.

В раскрывающемся меню выберите место, где вы купили эту книгу.

После загрузки файла убедитесь, что вы распаковали или извлекли папку, используя последнюю версию:

Zipeg / iZip / UnRarX для Mac

Наконец, создайте наш собственный файл JavaScript (script.js) и поместите в него следующий контент:

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

Как это работает & hellip

Приятно осознавать, что создание карты с помощью OpenLayers может быть быстро достигнуто с помощью минимального кода. Однако мы читаем эту книгу не для того, чтобы отстраниться от трепета, мы предпочли бы попытаться понять, как JavaScript достиг этого.

Первоначально стоит изучить HTML, потому что OpenLayers был занят внесением поправок. Вам нужно будет открыть инструменты разработки вашего браузера. Обычно это так же просто, как щелкнуть правой кнопкой мыши в любом месте страницы и выбрать Проверить элемент из контекстного меню. Прокрутите вниз до нашего элемента & ltdiv & gt, который мы изначально создали. Он должен выглядеть примерно так, как на следующем снимке экрана:

Вы заметите, что OpenLayers изменил содержимое нашего ранее пустого & ltdiv & gt и вставил дочерний элемент & ltdiv & gt, который расширяется до общих размеров родительского элемента, который мы установили для заполнения экрана. Вы полностью контролируете размер карты через CSS.

OpenLayers ставит перед своими хуками CSS префикс ol-.

Внутри этого сгенерированного & ltdiv & gt находится элемент & ltcanvas & gt, составляющий карту, которую вы видите перед собой. Технология холста HTML5 более производительна, чем собранные элементы DOM изображения, которые были структурой по умолчанию в OpenLayers 2.

Для любопытных, углубитесь в другие элементы & ltdiv & gt, и вы быстро наткнетесь на HTML для элементов управления картой. В отличие от OpenLayers 2, который использовал изображения для элементов управления картой, OpenLayers 3 использует только CSS. Это означает, что настройка элементов управления картой намного проще, чем раньше.

Давайте на мгновение выйдем из HTML и переключим наше внимание на JavaScript, который заставил все это работать. Мы рассмотрим код по частям:

Конструктор ol.Map - это наша точка входа для создания карты. При создании экземпляра часть того, что происходит, включает создание элементов HTML, которые мы рассмотрели ранее. Как минимум, конструктору требуется представление, один или несколько слоев и цель в качестве аргументов:

Чтобы помочь нам понять отдельные шаги, необходимые для создания карты, давайте представим следующую аналогию. Предположим, что карта - это обширный и живописный мир, который вы можете увидеть только в бинокль, а ol.View - это бинокль. Вы можете наклонять голову и вращаться (вращение обзора), перемещать линию обзора так, чтобы указывать на другое место (изменение центра обзора), и настраивать фокус для различных объектов на расстоянии (масштабирование / разрешение).

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

Свойство Layers в ol.Map ожидает массив, так как вы можете включать несколько слоев на карту.

Конструктор ol.layer.Tile является подклассом ol.layer.Layer, но он специально разработан для предварительно отрисованных мозаичных изображений, которые структурированы в виде сеток и упорядочены по уровням масштабирования для определенных разрешений.

Источник мозаичного слоя является производным от конструктора ol.source.OSM, который позволяет нам легко использовать службу листов OpenStreetMap. Этот конструктор является подклассом ol.source.XYZ, который является форматом, который использует OSM.

Наконец, целевое свойство ol.Map может быть либо строкой (которая должна представлять идентификатор HTML-элемента), либо вместо этого вы можете передать элемент DOM. Наша строка js-map совпадает с нашим элементом HTML:

В качестве альтернативы мы могли бы передать элемент DOM:

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

Есть еще & hellip

В нашем первом примере мы использовали как можно больше веб-страницы, но все мы знаем, что это не совсем определение полноэкранного режима! Чтобы действительно правильно работать в полноэкранном режиме, OpenLayers может использовать полноэкранный API HTML5.

Вы можете найти исходный код этого примера в ch01 / ch01-html5-full-screen-map /.

Сохраните HTML и CSS точно такими же, как в предыдущей версии, но измените JavaScript так, чтобы он соответствовал следующему:

Внимательные из вас, возможно, заметили, что, несмотря на то, что мы не передали никаких элементов управления в нашу предыдущую версию карты, она все еще содержала элементы управления масштабированием и атрибуцией. Это связано с тем, что OpenLayers добавляет некоторые элементы управления по умолчанию, если они не указаны.

Мы решили расширить стандартные элементы управления, которые обычно предоставляет OpenLayers, и добавить полноэкранный элемент управления. Утилита расширения происходит из библиотеки Google Closure, которая расширяет объект с помощью другого объекта на месте.

Откройте файл в браузере, и вы увидите новый полноэкранный элемент управления в правом верхнем углу карты. Нажмите кнопку, чтобы перейти в полноэкранный режим!

Если мы хотим просто включить полноэкранный элемент управления без каких-либо других, мы можем использовать следующий код:

Хотя мы передаем только один элемент управления, OpenLayers ожидает коллекцию, поэтому она заключена в массив.

We finish this topic having learned how to create a new map from scratch with some custom controls. It's time to move on to the next topic!


5.7. Data Import¶

Raster data in a variety of formats, such as TIFF, netCDF, GRIB, etc. can be imported in rasdaman through the wcst_import.sh utility. Internally it is based on WCS-T requests, but hides the complexity and maintains the geo-related metadata in its so-called petascopedb while the raster data get ingested into the rasdaman array store.

Building large time-series / datacubes, mosaics, etc. and keeping them up-to-date as new data become available is supported for a large variety of data formats and file/directory organizations.

The systemtest contains many examples for importing different types of data.

5.7.1. Introduction¶

The wcst_import.sh tool is based on two concepts:

  • Recipe - A recipe defines how a set of data files can be combined into a well-defined coverage (e.g. a 2-D mosaic, regular or irregular 3-D timeseries, etc.)
  • Ingredients - A JSON file that configures how the recipe should build the coverage (e.g. the server endpoint, the coverage name, which files to consider, etc.).

To execute an ingredients file in order to import some data:

Alternatively, wcst_import.sh can be started in the background as a daemon:

or as a daemon that is “watching” for new data at some interval (in seconds):

For further informations regarding the usage of wcst_import.sh :

The workflow behind is depicted approximately on Figure 5.1 .

Figure 5.1 Ingestion process with wcst_import.sh

An ingredients file showing all possible options (across all recipes) can be found here in the same directory there are several examples of different recipes.

The following recipes are provided in the rasdaman repository:

For each one of these there is an ingredients example under the ingredients/ directory, together with an example for the available parameters Further on each recipe type is described in turn, starting with the common options shared by all recipes.

5.7.2. Common Options¶

Some options are commonly applicable to all recipes. We describe these options for each top-level section of an ingredient file: config, input, recipe, and hooks.

5.7.2.1. config section¶

service_url - The endpoint of the WCS service with the WCS-T extension enabled

mock - Print WCS-T requests but do not execute anything if set to true . Set to false by default.

automated - Set to true to avoid any interaction during the ingestion process. Useful in production environments for automated deployment for example. By default it is false , i.e. user confirmation is needed to execute the ingestion.

blocking (since v9.8) - Set to false to analyze and import each file separately (non-blocking mode). By default blocking is set to true , i.e. wcst_import will analyze all input files first to create corresponding coverage descriptions, and only then import them. The advantage of non-blocking mode is that the analyzing and importing happens incrementally (in blocking mode the analyzing step can take a long time, e.g. days, before the import can even begin).

When importing in non-blocking import mode for coverages with irregular axes, it will only rely on sorted files by filenames and it can fail if these axes’ coefficients are collected from input files’ metadata (e.g: DateTime value in TIFF’s tag or GRIB metadata) as they might not be consecutive. wcst_import will not analyze all files to collect metadata to be sorted by DateTime as in default blocking import mode.

default_null_values - This parameter adds default null values for bands that do нет have a null value provided by the file itself. The value for this parameter should be an array containing the desired null value either as a closed interval low:high or single values. Example:

If set this parameter will override the null/nodata values present in the input files.

If a null value interval is specified, e.g. e.g "9.96921e+35:*" , during encode it will not be preserved as-is because null value intervals are not supported by most formats. In this case it is recommended to first specify a non-interval null value, followed by the interval, e.g. [9.96921e+35, "9.96921e+35:*"] .

tmp_directory - Temporary directory in which gml and data files are created should be readable and writable by rasdaman, petascope and current user. By default this is /tmp .

crs_resolver - The crs resolver to use for generating WCS-T request. By default it is determined from the petascope.properties setting.

url_root - In case the files are exposed via a web-server and not locally, you can specify the root file url here the default value is "file://" .

skip - Set to true to ignore files that failed to import by default it is false , i.e. the ingestion is terminated when a file fails to import.

retry - Set to true to retry a failed request. The number of retries is either 5, or the value of setting retries if specified. This is set to false by default.

retries - Control how many times to retry a failed WCS-T request set to 5 by default.

retry_sleep - Set number of seconds to wait before retrying after an error a floating-point number can also be specified for sub-second precision. Default values is 1.

track_files - Set to true to allow files to be tracked in order to avoid reimporting already imported files. This setting is enabled by default.

resumer_dir_path - The directory in which to store the track file. By default it will be stored next to the ingredients file.

slice_restriction - Limit the slices that are imported to the ones that fit in a specified bounding box. Each subset in the bounding box should be of form < "low": 0, "high": <max> >, where low/high are given in the axis format. Example:

description_max_no_slices - Maximum number of slices (files) to show for preview before starting the actual ingestion.

subset_correction (deprecated since v9.6) - In some cases the resolution is small enough to affect the precision of the transformation from domain coordinates to grid coordinates. To allow for corrections that will make the import possible, set this parameter to true .

5.7.2.2. input section¶

  • coverage_id - The name of the coverage to be created if the coverage already exists, it will be updated with the new files collected by paths .
  • paths - List of absolute or relative (to the ingredients file) paths or regex patterns that would work with the ls command. Multiple paths separated by commas can be specified. The collected paths are sorted by file name by default, unless specified otherwise in the recipe section (e.g. by date/time for time-series recipes).

5.7.2.3. recipe section¶

import_order - Allow to sort the input files ( ascending (default) or descending ).Currently, it sorts by datetime which allows to import coverage from the first date or the recent date. Example:

tiling - Specifies the tile structure to be created for the coverage in rasdaman. You can set arbitrary tile sizes for the tiling option only if the tile name is ALIGNED . Example:

For more information on tiling please check the Storage Layout Language

wms_import - If set to true , after importing data to coverage, it will also create a WMS layer from the imported coverage and populate metadata for this layer. After that, this layer will be available from WMS GetCapabilties request. Example:

scale_levels - Enable the WMS pyramids feature. Level must be positive number and greater than 1 (note: only spatial geo axes, e.g. Lat and Long are scaled down in the pyramid member coverage). A new coverage as pyramid member of the importing coverage will be created with this pattern . Syntax:

scale_factors - Enable the WMS pyramids feature. It is a more flexible variant of the scale_levels setting. The two settings are exclusive, either scale_levels or scale_factors can exist in the ingredient file. В coverage_id of each factor must be unique in rasdaman and manually set by the user. В factors is a list of decimal values corresponding to the coverage axes according to its CRS order a scale value for an irregular axis must be 1, while for a regular axis it should be greater than 1 see more details here . For example, you can create two pyramid member 2D coverages which are 2x smaller (cov_level_2) and 4x smaller (cov_level_4) on the regular Lat а также Long axes:

pyramid_members - List of existing coverages which can be added as pyramid members of the importing coverage, see request . Syntax:

5.7.2.3.1. Image pyramids¶

Since v9.7 it is possible to create downscaled versions of a given coverage, eventually achieving something like an image pyramid, in order to enable faster WMS requests when zooming in/out.

By using the scale_levels option of wcst_import when importing a coverage with WMS enabled, petascope will create downscaled collections in rasdaman following this pattern: coverageId_<level> . If level is a float, then the dot is replaced with an underscore, as dots are not permitted in a collection name. Some examples:

Example ingredients specification to create two downscaled levels which are 8x а также 32x smaller than the original coverage:

Two new WCS-T non-standard requests are utilized by wcst_import for this feature, see here for more information .

5.7.2.4. hooks section¶

Since v9.8, it is possible to run shell commands before/after ingestion by adding optional hooks configuration in an ingredient file. There are 2 types of ingestion hooks:

  • before_ingestion - Run shell commands before analyzing the input files, e.g. reproject input files from EPSG:3857 to EPSG:4326 with gdalwarp and import the reprojected files only.
  • after_ingestion - Run shell commands after importing the input files, e.g. clean all projected files from running gdalwarp above.

When import mode is set to non-blocking ( "blocking": false ), wcst_import will run before/after hook(s) for the file which is being used to update coverage, while the default blocking importing mode will run before/after hooks for all input files before/after they are updated to a coverage. Parameters are explained below.

Example: Import GDAL subdatasets

The example ingredients below contains a pre-hook which replaces the collected file path into a GDAL subdataset form in this particular case, with the GDAL driver for NetCDF a single variable from the collected NetCDF files is imported.

5.7.3. Recipe map_mosaic¶

Well suited for importing a tiled map, not necessarily continuous it will place all input files given under a single coverage and deal with their position in space. Parameters are explained below.

5.7.4. Recipe time_series_regular¶

Well suited for importing multiple 2-D slices created at regular intervals of time (e.g sensor data, satelite imagery etc) as 3-D cube with the third axis being a temporal one. Parameters are explained below

5.7.5. Recipe time_series_irregular¶

Well suited for importing multiple 2-D slices created at irregular intervals of time into a 3-D cube with the third axis being a temporal one. There are two types of time parameters in “options”, one needs to be choosed according to the particular use case:

tag_name - e.g. TIFFTAG_DATETIME in the image’s metadata the metadata should be checked with gdalinfo <file> , as not every image may have the tag. Below is an example:

filename allows an arbitrary pattern to extract the time information from the data file paths. Below is an example:

5.7.6. Recipe general_coverage¶

This is a highly flexible recipe that can handle any kind of data files (be it 2D, 3D or n-D) and model them in coverages of any dimensionality. It does that by allowing users to define their own coverage models with any number of bands and axes and fill the necesary coverage information through the so called ingredient sentences inside the ingredients.

5.7.6.1. Coverage parameters¶

Using ingredient sentences we can define any coverage model directly in the options of the ingredients file. Each coverage model contains the following parts:

  • crs - Indicates the crs of the coverage to be constructed. Either a CRS url can be used e.g. http://opengis.net/def/crs/EPSG/0/4326 or the shorthand notation CRS1@CRS2@CRS3 , e.g. OGC/0/AnsiDate@EPSG/0/4326 for indicating a time/date + spatial CRS.
  • metadata - A group of options controlling metadata extraction and consolidation more detailed information follows below
  • slicer - A group of options controlling the data decoding and placement into the overall datacube more detailed information follows below .
5.7.6.1.1. metadata section¶

The metadata section specifies in which format you want the metadata (json or xml). It can only contain characters and is limited in size by the backend database limit for CLOB columns for postgresql (the default backend for petascope) the maximum size is 2GB (source).

type - Specifies the format for storing the coverage metadata xml and json are supported, and it is set to xml by default.

global - Specifies fields which should be saved once for the whole coverage (e.g. the data licence, the creator etc). For example a “Title” metadata value can be set with "global": < "Title": "'Drought code'", . >.

local - Specifies fields which are fetched from each input file to be stored in coverage’s metadata. When subsetting in the output coverage only local metadata associated to the subsetted areas will be added to the result. E.g., "local": < "LocalMetadataKey": "$" > sets LocalMetadataKey to a metadata value extracted from the input data the $ <..>is explained in Data expressions . For a more detailed explanation of local metadata see the dedicated Local metadata from input files section.

colorPaletteTable - Controls collection of color palette table for the created coverage, which can then be used internally when encoding coverage to, e.g. PNG, to colorize the result. Currently only GDAL-style colorTable with 256 color entries is supported.

A path to an explicit Color Palette Table file can be specified, see example file such a file can be referenced in the ingredients file with, e.g., "colorPaletteTable": "PATH/TO/table.cpt" .

If colorPaletteTable is set to "auto" or not specified at all, and the slicer is set to gdal (see next section for info on slicers), then the color table will be read automatically from the first input file if its metadata contains one.

If colorPaletteTable is set to an empty string "" , any color table metadata will be ignored when creating coverage’s global metadata.

bands and axes - Allow specifying metadata for the coverage bands and/or axes more details can be found in Band and axis metadata in global metadata .

5.7.6.1.2. slicer section¶

The slicer subsection specifies the driver to use to read from the data files, the required bands from data files and for each axis from the CRS how to obtain the bounds and resolution corresponding to each file.

type - Specifies the decoding driver to be used currently the following are supported:

gdal - for TIFF, PNG, and other encoding format that can be read with GDAL (check with gdalinfo <file> )

netcdf - for importing NetCDF data. If a netCDF file is flipped on Lat axis (South -> North coordinates increase in the output of ncdump -c ) instead of GDAL style (North -> South coordinates decrease), then it is necessary to flip it before importing as rasdaman, e.g. with cdo invertlat input.nc output.nc .

grib - for GRIB data. Currently, rasdaman only supports GRIB files with gridType format of regular lat long regular_ll . If the format is different, it is necessary to preprocess the input files into regular grid type. The grid type can be retreived with grib_dump file.grib | grep 'gridType' .

If a GRIB file is flipped on Lat axis (South -> North with jScansPositively = 0 in the output of grib_dump ) instead of GDAL style (North -> South with jScansPositively = 1 ), then it is necessary to flip it before importing to rasdaman, e.g. with cdo invertlat input.grib output.grib .

pixelIsPoint - Only valid if type is netcdf or grib . In some cases, by convention in the input files, the coordinates are set in the middle of grid pixels, hence, set to true to extend the lower and upper bounds of each regular axis by half grid pixel to be able to import. By default it is set to false .

bands - A list of bands/chanels/variables from the input files which should be imported to the importing coverage. Each entry is a JSON object with the following options, of which identifier and name are mandatory to specify while the rest are optional:

  • identifier - The name of the band in the input file
  • name - The name of the band which will be used in the created coverage this can be set to different from the indentifier
  • description - Metadata description of the band
  • nilValue` - Metadata null value of the band
  • nilReason - Metadata reason for the null value of the band
  • uomCode - Set the Unit of measurement (uom) code of the band. Besides setting it directly, it can also be derived from the input file metadata, with e.g. $ for NetCDF or $ for GRIB.
  • Further "key": "value" entries can be specified to add customized band metadata to the global coverage metadata.

axes - A JSON object which configures the properties of each axis of the created coverage with "axisLabel": < properties. >. The possible properties are listed below generally, gridOrder , min , max , and resolution have to be specified, except for irregular axes where resolution is not applicable.

  • gridOrder - The index of the axis in the input file (0-based)
  • crsOrder - Specifies a different name for this axis than the one configured in the CRS’s definition more details can be found here
  • min - The lower bound of the axis (coordinates in the axis CRS)
  • max - The upper bound of the axis (coordinates in the axis CRS)
  • resolution - The resolution of the axis from the input file if this axis is irregular, the resolution is set to 1
  • statements - Import python utility libraries (e.g. datetime / timedelta ) to support calculating min , max , resolution , etc covered in more detail in a subsequent section

A few additional options are specific to irregular axes:

  • irregular - Set to true to specify that this axis is irregular, e.g. a time axis with irregular datetime indexes if not specified, it is set to false by default
  • directPositions - A list of coefficients which are extracted or calculated from the axis values specified in the input file for an example see this ingredients file
  • dataBound - Set to false to specify that this axis should be imported as a slicing point instead of a subset with lower and upper bounds typical use case for this is when extracting irregular datetime values from the input file names. When not specified it is set to true by default.
  • sliceGroupSize - Group multiple input slices into a single slice in the created coverage, e.g., multiple daily data files onto a single week index on the coverage time axis explained in more detail here
5.7.6.1.3. Examples¶

The examples below illustrate importing data in different formats with the general_coverage recipe many more can be found in the rasdaman test suite.

Commented example for importing GRIB data (only the recipe section is shown for brevity):

Example for importing NetCDF data (full ingredients file here):

Example for importing TIFF data with the gdal driver (full ingredients file here):

5.7.6.2. Ingredient sentences¶

An ingredient sentence can be of multiple types:

  • Numeric - e.g. 2 , 4.5
  • Strings - e.g. 'Some information'
  • Функции - e.g. datetime('2012-01-01', 'YYYY-mm-dd')
  • Data expressions - Allow to collect information from the data file being imported with a specific format driver. An expression is of form $ - e.g. $ or $
  • Python expressions - The types above can be combined into any valid Python expression this allows to do mathematical operations, string parsing, date/time manipulation, etc. E.g. $ + 1/2 * $ or datetime($ * 24 * 3600) . Expressions can use functions from any Python library which just needs to be explicitly imported as explained in Using libraries in sentences .

5.7.6.3. Data expressions¶

Each driver allows expressions to extract information from input files. We will mark with capital letters things that vary in the expression. Например. $ means that you can replace FIELD with any valid gdal metadata tag such as TIFFTAG_DATETIME . Example ingredients where data expressions are used can be found in Examples .

5.7.6.3.1. NetCDF¶
Тип Описание Examples
Metadata information $ $
Variable information $ where VAR_NAME can be any variable in the file and MODIFIER can be one of: first|last|max|min Any extra modifiers will return the corresponding metadata field on the given variable $ $
Dimension information $ where DIM_NAME can be any dimension in the file. This will return the value on the selected dimension. $
5.7.6.3.2. GDAL¶

Relevant for TIFF, PNG, JPEG, and other 2D data formats.

Тип Описание Examples
Metadata information $ $
Geo Bounds $ where BOUND_NAME can be one of the minX|maxX|minY|maxY $
Geo Resolution $ where RESOLUTION_NAME can be one of the resolutionX|resolutionY $
Origin $ where ORIGIN_NAME can be one of the originX|originY $

5.7.6.3.3. GRIB¶
Тип Описание Examples
GRIB Key $ where KEY can be any of the keys contained in the GRIB file $ is the special value to get the current processed GRIB message index (starting from 1) $
5.7.6.3.4. File¶
Тип Описание Examples
File Information $ where property can be one of path|name|dir_path|original_path|original_dir_path original_* allows to get the original input file’s path/directory (used only when using pre-hook with replace_path to replace original input file paths with customized file paths). $
Imported File Information $ where property can be one of path|name|dir_path|original_path|original_dir_path Files which were imported to rasdaman (excluded skipped files). This variable is used only for after_ingestion hooks. $
5.7.6.3.5. Special functions¶

A couple of special functions are available to help with more complicated expressions:


Смотреть видео: Serviciul de caracteristici web WFS curs de blocare GeoServer cu Leaflet. Tekson